相关疑难解决方法(0)

将对象数组转换为ActiveRecord :: Relation

我有一个对象数组,我们称之为Indicator.我想def self.subjects在这个数组上运行Indicator类方法(变种类,范围等).我知道在一组对象上运行类方法的唯一方法是让它们成为ActiveRecord :: Relation.所以我最终要求添加一个to_indicators方法Array.

def to_indicators
  # TODO: Make this less terrible.
  Indicator.where id: self.pluck(:id)
end
Run Code Online (Sandbox Code Playgroud)

有时我会链接相当多的这些范围来过滤类方法中的结果.所以,即使我在ActiveRecord :: Relation上调用一个方法,我也不知道如何访问该对象.我只能通过它来获取它的内容all.但是all是一个数组.那么我必须将该数组转换为ActiveRecord :: Relation.例如,这是其中一种方法的一部分:

all.to_indicators.applicable_for_bank(id).each do |indicator|
  total += indicator.residual_risk_for(id)
  indicator_count += 1 if indicator.completed_by?(id)
end
Run Code Online (Sandbox Code Playgroud)

我想这可以归结为两个问题.

  1. 如何将对象数组转换为ActiveRecord :: Relation?最好不要where每次都做.
  2. def self.subjectsActiveRecord :: Relation上运行类型方法时,如何访问ActiveRecord :: Relation对象本身?

谢谢.如果我需要澄清任何事情,请告诉我.

ruby activerecord ruby-on-rails

93
推荐指数
3
解决办法
6万
查看次数

标签 统计

activerecord ×1

ruby ×1

ruby-on-rails ×1