2009-01-27 6 views
1

je la définition Rails suivants:: par des relations dans les rails: requête par attribut dans le tableau connexe

Class Book 
    string title 
    has_many readings 
    has_many users, :through => :readings 

Class Reader 
    int rating 
    belongs_to :book 
    belongs_to :user 

Class User 
    has_many readings 
    has_many books, through => :readings 

Non Je veux interroger comme ceci:

Donne-moi toutes les lectures évaluations pour l'utilisateur A qui have book.title = "test"

Pourriez-vous m'aider? Merci!

Répondre

1

Cela vous donnera un tableau de toutes les évaluations pour un livre avec le titre « test » qui a été lu par l'utilisateur avec le nom « A »

User.find_by_name("A").books.find_by_title("test").readings.map{|r| r.rating } 

Mais pour être honnête, je ne suis vraiment pas sûr si c'est ce que vous voulez.

1

Vous pouvez inclure les modèles associés et les utiliser comme paramètres.

Users.find(
    :all, 
    :include => {:readings => :books}, 
    :conditions => "books.title = ? AND etc" 
) 

Évidemment pas 100% correct, mais devrait vous donner la bonne idée.

Questions connexes