基于多个模型创建范围

时间:2012-07-27 18:08:28

标签: ruby-on-rails scope

我正在尝试创建一个与众不同的范围。我有一个应用网站的应用程序。有一个名为“网站”的模型,其中有很多页面。网站模型有一个名为主页的列。每个站点的页面列表包含主页和其他页面(关于,定价等)。

我想为页面模型创建两个范围。一个标识主页,另一个标识所有其他页面。我在考虑这样的事情。

my_homepage =  Site.find_by_id(self.site_id).homepage
scope :homepage, where(url: my_homepage) 
scope :additional_pages, where(url != my_homepage)

不幸的是,这些都行不通。事实上,当我尝试在控制台中使用它们时,我不能。我收到了这个错误。

(Object doesn't support #inspect)

有更聪明的方法吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

scope :homepage, joins(:sites).where("sites.homepage = pages.url") 
scope :additional_pages, joins(:sites).where("sites.homepage <> pages.url")
相关问题