小编JPE*_*asy的帖子

调用带有enum_attr的记录时.all的参数数量错误

MODEL1有一个account_type,所以使用gem'enumerated_attributes',我做了这样的模型:

class MODEL1 < ActiveRecord::Base

  enum_attr :account_type, %w(^live demo disabled)

  def is_live?
    self.account_type == :live
  end
  def is_not_live?
    self.account_type == :demo || self.account_type == :disabled
  end
end
Run Code Online (Sandbox Code Playgroud)

我不明白的奇怪之处在于,当我查询任意MODEL1这样的种子时(这是我在rubymine控制台中运行follwing命令时的错误,但是在rake db:seed期间发生同样的2 for 1错误) :

MODEL1.all.sample
Run Code Online (Sandbox Code Playgroud)

MODEL1.all
Run Code Online (Sandbox Code Playgroud)

我明白了:

Dealer Load (0.3ms)  SELECT "MODEL1".* FROM "MODEL1S"
ArgumentError: wrong number of arguments (2 for 1)
from /.rvm/gems/ruby-2.0.0-p0@web/gems/enumerated_attribute-0.2.16/lib/enumerated_attribute/integrations/active_record.rb:78:in `instantiate'
from /.rvm/gems/ruby-2.0.0-p0@web/gems/activerecord-4.0.0/lib/active_record/querying.rb:45:in `block in find_by_sql'
from /.rvm/gems/ruby-2.0.0-p0@web/gems/activerecord-4.0.0/lib/active_record/result.rb:21:in `block in each'
from /.rvm/gems/ruby-2.0.0-p0@web/gems/activerecord-4.0.0/lib/active_record/result.rb:21:in `each'
from /.rvm/gems/ruby-2.0.0-p0@web/gems/activerecord-4.0.0/lib/active_record/result.rb:21:in `each'
from /.rvm/gems/ruby-2.0.0-p0@web/gems/activerecord-4.0.0/lib/active_record/querying.rb:45:in `map'
from /.rvm/gems/ruby-2.0.0-p0@web/gems/activerecord-4.0.0/lib/active_record/querying.rb:45:in `find_by_sql'
from /.rvm/gems/ruby-2.0.0-p0@web/gems/activerecord-4.0.0/lib/active_record/relation.rb:585:in `exec_queries'
from …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-4

6
推荐指数
1
解决办法
998
查看次数

标签 统计

ruby ×1

ruby-on-rails ×1

ruby-on-rails-4 ×1