2016-06-12 7 views
0

私はこのコードを持っている:`ブロック:メソッドCOLUMN0 =存在しない(続編::エラー)

require 'bundler/setup' 
require 'sequel' 
require 'sequel-rails' 
require_relative 'support/benchmark_rails' 
DB = Sequel.connect('sqlite::memory:') 
COUNT=25 
Sequel.extension :migration 
Sequel.migration do 
    change do 
    create_table(:users) do 
     primary_key :id 
     COUNT.times do |i| 
     column :"column#{i}", "varchar(255)" 
    end 
    end 
    end 
end 

class User < Sequel::Model; end 

attributes = {} 

COUNT.times do |i| 
    attributes[:"column#{i}"] = "Some string #{i}" 
end 

Benchmark.rails("sequel/#{db_adapter}_create_string_columns", time: 5) do 
    User.create(attributes) 
end 

をしかし、私はこれを実行しようとすると、それは次のエラーを与える:

/home/aaditya/Downloads/ruby-bench-suite/rails/vendor/bundle/ruby/2.3.0/gems/sequel-3.40.0/lib/sequel/model/base.rb:1759:in `block in set_restricted': method name= doesn't exist (Sequel::Error) 
    from /home/aaditya/Downloads/ruby-bench-suite/rails/vendor/bundle/ruby/2.3.0/gems/sequel-3.40.0/lib/sequel/model/base.rb:1746:in `each' 
    from /home/aaditya/Downloads/ruby-bench-suite/rails/vendor/bundle/ruby/2.3.0/gems/sequel-3.40.0/lib/sequel/model/base.rb:1746:in `set_restricted' 
    from /home/aaditya/Downloads/ruby-bench-suite/rails/vendor/bundle/ruby/2.3.0/gems/sequel-3.40.0/lib/sequel/model/base.rb:1257:in `set' 
    from /home/aaditya/Downloads/ruby-bench-suite/rails/vendor/bundle/ruby/2.3.0/gems/sequel-3.40.0/lib/sequel/model/base.rb:1715:in `initialize_set' 
    from /home/aaditya/Downloads/ruby-bench-suite/rails/vendor/bundle/ruby/2.3.0/gems/sequel-3.40.0/lib/sequel/model/base.rb:899:in `initialize' 
    from benchmarks/bm_sequel_create_string_columns.rb:34:in `new' 
    from benchmarks/bm_sequel_create_string_columns.rb:34:in `<main>' 

これを簡略化しようとしたところ、User.create(:name=>'Bob')のみを実行しようとしましたが、正常な結果は得られませんでした。私は何の間違いをしていますか?

アクティブレコードに対して同じコードが実行されているため、他の方法で問題はありません。

答えて

1

移行を定義するだけで、実際にはCREATE TABLEがデータベース上で実行されていません。移行コードを削除し、DB.create_tableに電話するだけです。

+0

私は同じことをやった! –

0

名前属性を持つユーザーを作成していますが、作成されたユーザーテーブルに名前列がありません。

+0

私はそれだけでテストしました。私は質問を編集しました。私はまだこのエラーが表示されます。 –

+0

Userクラスの募集にattr_accessor:nameを追加できますか? –

+0

それは変です。私はattr_accessor:column0をユーザクラスに追加し、 'User.create(:column0 =>" Some string 0 ")'のみを使用しました。これは私にこのエラーを与えました: ''初期化 ':SQLite3 :: SQLException:そのようなテーブルはありません:ユーザー(Sequel :: DatabaseError) ' –

関連する問題