Rails 2.3: использование других моделей named_scope внутри другого named_scope - PullRequest
0 голосов
/ 15 июня 2010

Допустим, у меня есть две модели, например:

class Comment < ActiveRecord::Base
  belongs_to :user
  named_scope :about_x :conditions => "comments.text like '%x%')"
end

class User < ActiveRecord::Base
  has_many :comments
end

Как я могу добавить named_scope к пользовательской модели, например, так:

class User < ActiveRecord::Base
  has_many :comments
  named_scope :comments_about_x, :includes => :comments, :comments_named_scope => :about_x
end

, что позволяет мне делать

all_user_comments_about_x = User.comments_about_x

Причина в том, что мне часто нужно использовать модели комментариев about_x с именованной логикой контекста, но я не хочу, чтобы "comments.text like '% x%')" разбросан по моему коду.

Надеюсь, в этом есть смысл:)

Спасибо

1 Ответ

1 голос
/ 15 июня 2010

Вам просто нужно использовать

@user.comments.about_x

Я лично думаю, что нет необходимости в named_scope на user модели.

Но вместо этого вы можете добавить метод:

class User < ActiveRecord::Base
   def comments_about_x
      self.comments.about_x
   end
end

и используйте

@user.comments_about_x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...