将Rails 4 has_many从具有proc的条件转换为where

时间:2013-10-09 17:57:48

标签: ruby-on-rails-4 rails-activerecord

我有以下工作has_many和proc来捕获上下文的参数:

has_many :subclass_point_analytics, :conditions =>  proc {"assessment_id = #{self.send(:assessment_id)}" }, :foreign_key => 'gid',  :dependent => :destroy

我正在使用Rails 4并且(正当地)抱怨使用:条件。经过30分钟和大量尝试后,我无法弄清楚如何将条件转换为 - > {where ...}格式。我很感激有人了解proc语法,以帮助我做到正确。

2 个答案:

答案 0 :(得分:16)

这样做:

has_many :subclass_point_analytics, -> (object) { where("assessment_id = ?", object.assessment_id) }, :foreign_key => 'gid',  :dependent => :destroy

对象是您的实际实例。 另外,要注意:可调用必须是第一件事(:条件往往在最后)

答案 1 :(得分:0)

我会从这样的事情开始:

has_many :subclass_point_analytics, -> { where("assessment_id = #{self.send(:assessment_id)}") }, :foreign_key => 'gid',  :dependent => :destroy