我正在使用 Ruby on Rails 3.2.2,我想知道将ActiveRecord::Relation
对象作为方法参数传递是否是正确/不危险/常见的方法。
目前,我计划以这种方式在我的模型的范围方法中使用这种方法:
class Article < ActiveRecord::Base
def self.with_active_associations(associations, active = nil)
# associations.class
# => ActiveRecord::Relation
case active
when nil
scoped
when 'active'
with_ids(associations.pluck(:associated_id))
when 'not_active'
...
else
...
end
end
end
注意 I:出于性能原因,我想使用这种方法,因为它ActiveRecord::Relation
是延迟加载的(在我的情况下,如果active
参数值不是active
数据库,则根本不会命中)。
注二:如果我作为参数值传递 an而不是 an ,则该pluck
方法的使用可能会产生错误。association
Array
ActiveRecord::Relation