2016-08-28 2 views
1

Ich versuche, meine verknüpften Tabelle auf Daten zuzugreifen, aber leider ..Rails3: Verwenden Sie verknüpfte Tabelle Daten

Zum Beispiel Assoziation zwischen Autoren und Bücher, Autor haben viele Bücher: Ich verwende join funtion die beitreten Autor Tabelle auf den Tisch Bücher, um die author_name des Autors für den Zugriff auf Attribut

class Author < ActiveRecord::Base 
    has_many :books 

    attr_accessible :author_name 
end 

class Book < ActiveRecord::Base 
    belongs_to :author 
end 

random_author = Author.first 
books = random_author.books.where(id > 5).joins(:author) #this should make all author attributes available to each book, right? 

book_1 = books.first 
book_1.author_name 
=> NoMethodError: undefined method `author_name' for #<Book:0x111111> 

natürlich die Assoziation mit funktionieren würde: book_1.author.author_name aber das wird eine weitere Abfrage benötigen, was ist, was ich versuche zu vermeiden.

Ich meine die joins Operation verbindet die Daten des Autors - es muss eine Möglichkeit geben, richtig darauf zuzugreifen?

p.s. Ich kann includes Methode verwenden. und eifrig laden die Autorendaten auch, aber da ich nur ein einzelnes Attribut brauche - gibt es eine Möglichkeit, es mit nur einer joins Methode zu erreichen? Danke

Antwort

0

Sie müssen hinzufügen

.select('books.*, author.name AS author_name') 

So Ihre Anfrage

books = random_author.books.where(id > 5).joins(:author).select('books.*, author.name AS author_name') 
wird
Verwandte Themen