ruby-on-rails – Rails关联中的未知密钥

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails关联中的未知密钥前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下协会代码
has_many :rates_without_dimension,:as => :rateable,:class_name => "Rate",:dependent => :destroy,:conditions => {:dimension => nil}
has_many :raters_without_dimension,:through => :rates_without_dimension,:source => :rater  

has_one :rate_average_without_dimension,:as => :cacheable,:class_name => "RatingCache",:conditions => {:dimension => nil}


dimensions.each do |dimension|        
  has_many "#{dimension}_rates",:conditions => {:dimension => dimension.to_s},:as => :rateable

  has_many "#{dimension}_raters",:through => "#{dimension}_rates",:source => :rater         

  has_one "#{dimension}_average",:conditions => {:dimension => dimension.to_s}
end

它引发了一个错误

Unknown key: :conditions. Valid keys are: :class_name,:class,:foreign_key,:validate,:autosave,:table_name,:before_add,:after_add,:before_remove,:after_remove,:extend,:primary_key,:dependent,:as,:through,:source,:source_type,:inverse_of,:counter_cache

我试图将第一行改为:

has_many :rates_without_dimension,-> { where(:dimension => nil) }

但它也引发了一个错误,你能指出我有什么问题吗?

解决方法

这里描述的问题相同 https://teamtreehouse.com/forum/unknown-key-conditions

正如我在示例中看到的,带有条件的lambda应该在关联名称后执行,因为没有{}的hash只能作为最后一个参数.

尝试

has_many :rates_without_dimension,-> { where(dimension: nil) },as: :rateable,class_name: "Rate",dependent: :destroy

附:你可以使用http://apidock.com/rails/Object/with_options使它看起来更好

原文链接:https://www.f2er.com/ruby/270411.html

猜你在找的Ruby相关文章