Activerecord Rails 3.1:如何基于方法的结果进行查询?
在我的应用程序中,我希望保持ActiveRecord查询之间的链接能力。但是 我并非总能做到这一点。有时我被迫使用select,它返回一个数组 从而破坏了可链接性 特别是,我的应用程序中有一个名为Response的模型 响应有一个名为page的方法?它返回的页码是一个整数 特定的响应对象Activerecord Rails 3.1:如何基于方法的结果进行查询?,activerecord,ruby-on-rails-3.1,Activerecord,Ruby On Rails 3.1,在我的应用程序中,我希望保持ActiveRecord查询之间的链接能力。但是 我并非总能做到这一点。有时我被迫使用select,它返回一个数组 从而破坏了可链接性 特别是,我的应用程序中有一个名为Response的模型 响应有一个名为page的方法?它返回的页码是一个整数 特定的响应对象 def page? ... returns the page number ... end 方法-page?-需要查看应用程序中的其他一些型号才能执行。 换言之,它不能仅仅依赖响应表中的数据
def page?
... returns the page number ...
end
方法-page?-需要查看应用程序中的其他一些型号才能执行。
换言之,它不能仅仅依赖响应表中的数据
现在,我在响应模型类中定义了一个查询(on_pagen),如下所示
def self.on_page(n)
select{ |m| m.page? == n }
end
问题是上面的选择返回一个数组,而不是ActiveRecord::Relation。
这意味着我无法执行以下“with_scan”是另一个ActiveRecord查询
Response.on_page(3).with_scan
我可以通过改变查询的顺序来实现上述功能。但这只是一个黑客
在“on_page”查询中是否有使用select的替代方法?还是另一种使用它的方式?是否有任何方式可以保持可链接性
提前感谢您的帮助,
Abhinav可链接性是通过使用ActiveRecord::Relation的实例来实现的。要将数组实例转换为ActiveRecord::Relation,请使用.scoped方法:
def self.on_page(n)
select{ |m| m.page? == n }.scoped
end
您可以查看文档