Faire une jointure ActiveRecord dans RoR semble fonctionner si je regarde le SQL généré. Mais ce que je ne peux pas comprendre, c'est pourquoi le résultat de ce SQL n'est pas retourné dans la variable. Ce que je fais est:ActiveRecord Joint le résultat
class Book < ActiveRecord::Base
has_many :readings, dependent: :destroy
has_many :readers, :through => :readings
accepts_nested_attributes_for :readings
end
class Reader < ActiveRecord::Base
has_many :readings, dependent: :destroy
has_many :books, :through => :readings
accepts_nested_attributes_for :books
end
class Reading < ActiveRecord::Base
belongs_to :reader
belongs_to :book
end
Maintenant, lorsque vous demandez:
result = Reading.where(:reader_id => rid,).joins(:book).select(columns.collect{|c| c[:name]}.join(',')).flatten
Il montre le SQL généré correct:
SELECT readings.id,books.title,books.author,readings.when FROM `readings` INNER JOIN `books` ON `books`.`id` = `readings`.`book_id` WHERE `readings`.`reader_id` = 2
MAIS: la variable de résultat ne contient que les valeurs de l'enregistrement de lecture, PAS les champs de la table jointe.
Qu'est-ce qui me manque?
mon cher ami, il ne s'affiche pas lorsque vous voyez la variable résultat. mais vous pouvez accéder aux colonnes de book.check une fois – krishnar