Rails - 临时ActiveRecord关系

时间:2016-11-03 16:47:13

标签: ruby-on-rails activerecord

我想为某些模型创建一个返回所有对象的方法。问题是,除了db上的持久化对象之外,我还想根据某些条件加入更多对象。所以它会像

MyModel.all + [some_array].map{|a| MyModel.new(attribute: a)}

问题是:这些新记录不会持久存储在数据库中。它们将作为新记录动态创建,以加入持久化的记录。这样我展示了一些作品,我得到了MyModel的一系列对象,但问题是,因为它不是ActiveRecord关系,所以我不能在那组记录上做where

有关解决方法的任何想法吗?

1 个答案:

答案 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' }