在我的Rails应用程序中,我有一个小方法,它将一个集合作为参数:
def calculate_column_width(collection)
if collection.where(:sample => true).present?
"10%"
else
"20%"
end
end
它有效,但我不喜欢它创建了两个额外的数据库查询。
如何重写函数,使其在已经由Rails加载到内存中的集合(例如@people
)上运行?
感谢您的帮助。
答案 0 :(得分:2)
最好不要使用ActiveRecord方法,而是像集合一样处理集合。以上为例:
def calculate_column_width(collection)
if collection.find { |object| object.sample == true }
"10%"
else
"20%"
end
end
请注意,此find
方法是ruby数组中存在的方法,只会返回与条件匹配的第一个方法。它应该避免进行额外的数据库查询。