Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 基于多个模型创建作用域_Ruby On Rails_Scope - Fatal编程技术网

Ruby on rails 基于多个模型创建作用域

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

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

我想为pages模型创建两个作用域。一个标识主页,另一个标识所有附加页面。我在想这样的事情

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帖子中提问。)是的,最好再提出一个问题。(并验证我的答案:))下面是后续问题: