0

少し変わったスコープを作ろうとしています。ウェブサイトを扱うアプリがあります。「サイト」と呼ばれるモデルがあり、has_manyページがあります。サイトモデルには、ホームページと呼ばれる列があります。各サイトのページのリストには、ホームページと追加のページ(概要、価格など)が含まれています。

ページモデル用に2つのスコープを作成したいと思います。1つはホームページを識別し、もう1つはすべての追加ページを識別します。こんなことを考えていました。

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)

これを行うためのよりスマートな方法はありますか?

4

1 に答える 1

1

これを試して :

scope :homepage, joins(:sites).where("sites.homepage = pages.url") 
scope :additional_pages, joins(:sites).where("sites.homepage <> pages.url")
于 2012-07-27T18:13:50.517 に答える