Rails 3 - полиморфные и глобальные области - PullRequest
0 голосов
/ 09 ноября 2010

Я пытался выяснить, как правильно использовать области действия для следующего примера.

Есть таблица Notes, которая имеет полиморфную ассоциацию с элементами.Но я также допускаю наличие «глобальных» Notes, поэтому, когда я делаю область действия для Notes, мне бы хотелось, чтобы она возвращала Polymorphic Association to Items и NULL Polymorphic field с некоторыми другими условиями, такими как тип логических объектов IsReviewed.Я пытался сделать следующее, но это не работает хорошо.

scope :is_reviewed, lambda { { :include => [:category, :notable], :conditions => ["is_reviewed = ?", true] } }

, а затем попытался, но не возвращает "Глобальные"

scope :is_reviewed, lambda { { :include => [:category, :notable], :conditions => ["notable_type = 'Item' and is_reviewed = ?", true] } }

и пытался, но, похоже, не работает правильно

scope :is_reviewed, lambda { { :include => [:category, :notable], :conditions => ["(notable_type = 'Item' or notable_type = NULL) and is_reviewed = ?", true] } }

Любые мысли или помощь будут высоко оценены.БЛАГОДАРЯ

1 Ответ

0 голосов
/ 09 ноября 2010

Я действительно заметил, что у меня была другая проблема, из-за которой эта область не работала. Следующая область действия действительно работает для извлечения заметных объектов, когда они существуют, и вы можете искать по известному типу в партиалах или помощниках, чтобы сделать правильную логику для типа заметного.

scope :is_reviewed, lambda { { :include => [:category, :notable], :conditions => ["is_reviewed = ?", true] } }

...