在我的应用中,我希望在ActiveRecord查询中保持可链接性。但 我并不总能这样做。有时我被迫使用select - 它返回一个数组 从而破坏了可链接性。
特别是,我的应用程序中有一个名为Response的模型
Response有一个名为page的方法吗?返回页码 - 整数 - 表示 特定的Response对象
def page?
... returns the page number ...
end
方法 - 页面? - 需要查看应用程序中的其他模型才能执行。 换句话说,它不能仅仅依赖于“响应表”中的数据
现在,我有一个查询 - on_page(n) - 在Response模型类
中定义如下 def self.on_page(n)
select{ |m| m.page? == n }
end
问题是上面的select返回一个Array而不是一个ActiveRecord :: Relation。 这意味着我无法执行以下操作('with_scan'是另一个ActiveRecord查询)
Response.on_page(3).with_scan
我可以通过更改查询的顺序来完成上述工作。但那只是一个黑客
是否有在'on_page'查询中使用select的替代方法?或者使用它的另一种方式?可以保持可连接性的任何方式?
先谢谢你的帮助, 阿比纳夫
答案 0 :(得分:0)
可链接性是通过使用ActiveRecord :: Relation的实例来完成的。要将Array的实例转换为ActiveRecord :: Relation,请使用.scoped()方法:
def self.on_page(n)
select{ |m| m.page? == n }.scoped
end
您可以查看文档here。