Rails3:使用连接表格的数据

时间:2016-08-28 15:44:01

标签: ruby-on-rails ruby-on-rails-3 associations

我试图访问我的联接表数据,但唉......

例如作者和书籍之间的关联,作者有很多书: 我使用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方法完成它?谢谢

1 个答案:

答案 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')