我正在尝试创建一个与众不同的范围。我有一个应用网站的应用程序。有一个名为“网站”的模型,其中有很多页面。网站模型有一个名为主页的列。每个站点的页面列表包含主页和其他页面(关于,定价等)。
我想为页面模型创建两个范围。一个标识主页,另一个标识所有其他页面。我在考虑这样的事情。
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)
有更聪明的方法吗?
答案 0 :(得分:1)
试试这个:
scope :homepage, joins(:sites).where("sites.homepage = pages.url")
scope :additional_pages, joins(:sites).where("sites.homepage <> pages.url")