#mysql #ruby-on-rails #ruby-on-rails-3 #activerecord
#mysql #ruby-on-rails #ruby-on-rails-3 #activerecord
Вопрос:
У меня возникли небольшие проблемы с запросом нескольких таблиц с разными типами ассоциаций. Может кто-нибудь указать мне правильное направление?
class Sale < ActiveRecord::Base
has_many :items, :dependent => :destroy
end
class Item < ActiveRecord::Base
belongs_to :sale, :dependent => :destroy
has_many :images, :dependent => :destroy
end
class Image < ActiveRecord::Base
belongs_to :item, :dependent => :destroy
end
Каким будет запрос, чтобы получить все товары, относящиеся к продаже, с идентификатором 1, а затем перебирать все изображения, относящиеся к каждому возвращенному товару?
Спасибо за вашу помощь.
Ответ №1:
Вы можете определить :through => :something
в has_many
ассоциации
class Sale < ActiveRecord::Base
has_many :items, :dependent => :destroy
has_many :images, :through => :items
end
а затем просто запрос
Sale.find(1).images
Комментарии:
1. Это создает некоторые проблемы, поскольку это не вернет изображения, относящиеся к элементу, который в данный момент находится в цикле (см. Приведенный Ниже Код)
<h2>Items in Sale</h2> <% if @sale.items.length > 0 %> <% @sale.items.each do |item| %> <p style="float: left; margin: 0; padding-left: 10px;"> <% @sale.images do |image| %> <%= image_tag image.photo.url(:thumb) %> <% end %> <b>Title:</b> <%= item.title%> </p> <% end %> <% else %> <p>No items listen in this sale</p> <% end %> <div style="clear:both;"></div>
Есть еще идеи?