2010-06-15 6 views
0

Disons que j'ai deux modèles comme ceci:Rails 2.3: en utilisant un autre modèle named_scope dans un autre named_scope

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 

Comment puis-je ajouter un named_scope au modèle de l'utilisateur comme si

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

Ce qui permet moi de le faire

all_user_comments_about_x = User.comments_about_x 

Le raisonnement est que je dois souvent utiliser les modèles de commentaires about_x nommé logique de portée, mais je ne sais pas vouloir avoir "comments.text like '% x%')" éparpillé autour de mon code.

J'espère que ce sens de faire :)

Merci

Répondre

1

Vous avez juste besoin d'utiliser

@user.comments.about_x 

Personnellement, je pense qu'il n'y a pas besoin d'un named_scope sur le modèle de user.

Mais vous pouvez ajouter une méthode à la place:

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

et utiliser

@user.comments_about_x 
Questions connexes