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

TJC*_*ers 6 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
Run Code Online (Sandbox Code Playgroud)

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

Tho*_*mas 16

这样做:

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

object是你的实际实例.另外,要注意:可调用必须是第一件事(:条件往往是最后的)