Оставаться сухим в Rails 3 с областями видимости и ассоциациями - PullRequest
2 голосов
/ 19 июля 2011

Вот соответствующие факты:

  1. Каждый topic has_many comments.

  2. Модель Comment имеетscope, называемый very_popular, который мы притворимся, сравнивая несколько его столбцов.

    def self.very_popular
      # lots of cool stuff
    end
    
  3. Модель Topic имеет scope, называемый exciting, включая все topics с very_popular comments.

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

def self.exciting
  join(:comments).very_popular
end

Как я могу повторно использовать область very_popular из * 1034?* модель в объеме Topic модели?

1 Ответ

6 голосов
/ 19 июля 2011

Вы не можете использовать прицел из другой модели напрямую. Что вы можете сделать, это объединить запросы. Topic.joins(:comments).merge(Comment.very_popular)

Райан прекрасно объясняет это здесь: http://railscasts.com/episodes/215-advanced-queries-in-rails-3

...