0

在我的应用程序中,我想跨 ActiveRecord 查询保持可链接性。但我并不总是能够这样做。有时我被迫使用 select - 它返回一个数组,从而破坏了可链接性。

特别是,我的应用中有一个名为 Response 的模型

响应有一个方法叫page?它返回特定 Response 对象的页码 - 一个整数

def page?
  ... returns the page number ...      
end

方法——页面?- 需要查看应用程序中的一些其他模型才能执行。它不能 - 换句话说 - 仅依赖于 Responses 表中的数据

现在,我有一个查询 - on_page(n) - 在响应模型类中定义如下

 def self.on_page(n)
   select{ |m| m.page? == n }
 end

问题是上面的选择返回一个数组而不是一个 ActiveRecord::Relation。这意味着我不能执行以下操作('with_scan' 是另一个 ActiveRecord 查询)

Response.on_page(3).with_scan

我可以通过更改查询完成的顺序来完成上述工作。但这只是一个黑客

在“on_page”查询中使用选择是否有替代方法?还是有不同的使用方式?任何可以保持可链接性的方式?

提前感谢您的帮助, Abhinav

4

1 回答 1

0

可链接性是通过使用 ActiveRecord::Relation 的实例来实现的。要将 Array 的实例转换为 ActiveRecord::Relation,请使用 .scoped() 方法:

def self.on_page(n)
   select{ |m| m.page? == n }.scoped
end

您可以在此处查看文档。

于 2012-09-16T20:16:35.787 回答