我想为某些模型创建一个返回所有对象的方法。问题是,除了db上的持久化对象之外,我还想根据某些条件加入更多对象。所以它会像
MyModel.all + [some_array].map{|a| MyModel.new(attribute: a)}
问题是:这些新记录不会持久存储在数据库中。它们将作为新记录动态创建,以加入持久化的记录。这样我展示了一些作品,我得到了MyModel的一系列对象,但问题是,因为它不是ActiveRecord关系,所以我不能在那组记录上做where
有关解决方法的任何想法吗?
答案 0 :(得分:1)
你在那组记录中的意思是什么?在该代码的末尾,您应该有一个MyModel对象数组,有些是持久的,有些则没有。如果您需要再获取这些对象的其他子集,则可以使用任何Enumerable方法,例如select
myarray = MyModel.all + [some_array].map{|a| MyModel.new(attribute: a)}
#as opposed to myarray.where(attribute: 'key')
myarray.select {|obj| obj.attribute == 'key' }