Ruby on rails 基于多个模型创建作用域
我正在尝试创建一个有点与众不同的范围。我有一个处理网站的应用程序。有一个叫做“站点”的模型,它有很多页面。站点模型有一个名为主页的列。每个站点的页面列表包含主页和附加页面(关于、定价等) 我想为pages模型创建两个作用域。一个标识主页,另一个标识所有附加页面。我在想这样的事情Ruby on rails 基于多个模型创建作用域,ruby-on-rails,scope,Ruby On Rails,Scope,我正在尝试创建一个有点与众不同的范围。我有一个处理网站的应用程序。有一个叫做“站点”的模型,它有很多页面。站点模型有一个名为主页的列。每个站点的页面列表包含主页和附加页面(关于、定价等) 我想为pages模型创建两个作用域。一个标识主页,另一个标识所有附加页面。我在想这样的事情 my_homepage = Site.find_by_id(self.site_id).homepage scope :homepage, where(url: my_homepage) scope :additio
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)
有更聪明的方法吗?试试这个:
scope :homepage, joins(:sites).where("sites.homepage = pages.url")
scope :additional_pages, joins(:sites).where("sites.homepage <> pages.url")
scope:homepage,连接(:sites).where(“sites.homepage=pages.url”)
范围:附加页面,连接(:sites).where(“sites.homepage.url”)
很有趣。我从未见过像这样的示波器。我将您的代码调整为“joints(:site)”(单数),效果非常好。一个问题:我注意到在我的附加页面中,出现了robots.txt文件。我想排除这些,但我不确定如何排除。我将“.where(“'robots.txt'pages.url[-10,10]”)添加到附加页面方法中,但没有成功。有什么建议吗?(如果你愿意,我可以在另一个StackOverflow帖子中提问。)是的,最好再提出一个问题。(并验证我的答案:))下面是后续问题: