Ассоциация, использующая has_many: через проблему - PullRequest
0 голосов
/ 02 июля 2011

У меня есть приложение, в котором есть две модели товаров и покупок.

Товары содержат список всех товаров в моей системе, а покупки определяют все покупки, сделанные пользователями ...

сейчасУ меня есть конкретный пользователь current_user, который может просматривать товары и покупать товары, и когда он нажмет кнопку «Купить», он сможет видеть все сделанные им покупки.я установил ассоциацию has_many :through и создал новую модель с именем приобрела_продукты, которая связывает вместе таблицу закупок и продуктов ..

class Product < ActiveRecord::Base
  has_many :purchased_products
  has_many :purchases, :through => :purchase_products
end

class Purchase < ActiveRecord::Base
  has_many :products, :through => :purchased_products
  has_many :purchased_products
end

class PurchasedProducts < ActiveRecord::Base
  belongs_to :purchases
  belongs_to :products
end

теперь я не понимаю, как узнать, какой пользователь приобрелкакой товар и покажи все его покупки?

Также, где я могу указать код, чтобы узнать все покупки текущего пользователя?

Ответы [ 2 ]

0 голосов
/ 03 июля 2011

Если продукты и покупки a User has_many, вы бы ссылались на них, как, вероятно, у вас users_controller show action:

@current_user = User.find(params[:id])
@products     = @current_user.products
@purchases    = @current_user.purchases
0 голосов
/ 02 июля 2011

Вы можете получить доступ к Product Purchase s и наоборот с двумя очень простыми утверждениями, такими как:

some_product = Product.find(some_product_id_or_find_query).purchases
some_purchases = Purchase.find(some_purchase_id_or_find_query).products

Вы не определили отношения между User и любымPurchase, я предполагаю, что это будет еще одна ассоциация HABTM, поэтому вы можете получить к ней доступ, как и в Product-> Покупки и покупки-> Product.

Вам обязательно нужно поискать в Google для такого родавещи, как ассоциации ActiveRecord очень хорошо документированы, http://edgeguides.rubyonrails.org/association_basics.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...