Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Convert Rails 4有许多从proc状态到where的条件_Ruby On Rails 4_Rails Activerecord - Fatal编程技术网

Ruby on rails 4 Convert Rails 4有许多从proc状态到where的条件

Ruby on rails 4 Convert Rails 4有许多从proc状态到where的条件,ruby-on-rails-4,rails-activerecord,Ruby On Rails 4,Rails Activerecord,我有以下几项工作,其中包括为上下文捕获参数的过程: has_many :subclass_point_analytics, :conditions => proc {"assessment_id = #{self.send(:assessment_id)}" }, :foreign_key => 'gid', :dependent => :destroy 我使用的是Rails 4,它(理所当然地)抱怨使用:条件。经过30分钟和多次尝试,我无法理解如何将:condition

我有以下几项工作,其中包括为上下文捕获参数的过程:

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

我使用的是Rails 4,它(理所当然地)抱怨使用:条件。经过30分钟和多次尝试,我无法理解如何将:conditions转换为->{where…}格式。如果有人了解proc语法,我将不胜感激。我将从以下内容开始:

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

has_many :subclass_point_analytics, -> (object) { where("assessment_id = ?", object.assessment_id) }, :foreign_key => 'gid',  :dependent => :destroy
对象是您的实际实例。
另外,请注意:可调用必须是第一件事(:条件往往在末尾)

这也是我开始的地方,但是由于缺少proc元素,所以它不起作用。我的问题是如何在转换过程中保留proc元素。奇怪的是,proc甚至是必需的。子类_point_analytics是否可能属于同一个模型,但有多个评估id?如果是这样,那么您将如何使用关联检索它们?似乎可以完全删除这些条件。它不可能有多个评估,但该条件被用作评估id,它是主键的前导,并且是分区键的一部分。没有它的性能差异是数据集大小的1000倍。您找到解决问题的方法了吗?对我来说非常有效。还建议将“object”变量重命名为更特定于域的名称。只想补充一点,我已经在“必要”的地方反复使用了这个变量,它的效果非常好。谢谢@Thomas的回答。在rails 3.2中如何实现这一点?