2012-04-18 23 views
0

在我的应用程序中,我想维护ActiveRecord查询的可链接性。但是 我并不总是能够这样做。有时候我不得不使用select - 这会返回一个Array ,从而破坏链的可用性。Rails 3.1:如何基于方法的结果进行查询?

特别是,我有一个名为我的应用程序响应

反应有一个方法叫页面模型?它返回该页面数 - 的整数 - 用于 特定响应对象

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

的方法 - 网页? - 需要在应用程序中查看一些其他模型才能执行。 它不能 - 换句话说 - 对在响应表中的数据仅仅依靠

现在,我有一个查询 - on_page(N) - 定义为响应模型类

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

问题是,如下上面的select返回一个数组而不是一个ActiveRecord :: Relation。 这意味着我不能做以下的(“with_scan”是另一个ActiveRecord的查询)

Response.on_page(3).with_scan 

我可以得到上面通过更改查询做了才能工作。但那只是一个破解

是否有替代方法使用'on_page'查询中的选择?或者使用它的不同方式?任何可以维持连锁性的方式?

预先感谢您的帮助, 阿比纳夫

回答

0

Chainability是用ActiveRecord ::关系的情况下,工作完成。要打开阵列的一个实例到的ActiveRecord ::关系,使用.scoped()方法:

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

您可以查看文档here

相关问题