我试图访问我的联接表数据,但唉......
例如作者和书籍之间的关联,作者有很多书:
我使用join
功能将作者表加入书籍表以访问作者的author_name
属性
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>
当然使用该关联会起作用:book_1.author.author_name
但这需要另一个查询,这是我试图避免的。
我的意思是joins
操作加入了作者的数据 - 必须有一种方法来访问它吗?
P.S。我可以使用includes
方法。并且也热切地加载作者数据,但由于我只需要一个属性 - 是否有办法只用joins
方法完成它?谢谢
答案 0 :(得分:0)
您需要添加
.select('books.*, author.name AS author_name')
所以你的查询变成了
books = random_author.books.where(id > 5).joins(:author).select('books.*, author.name AS author_name')