Как обратиться к из одной модели к атрибуту другой модели через has many through
- модель Клиент - Customer (связан с PriceGroup по id)
- модель Ценовая группа - PriceGroup (только имена ценовых групп) для разных ценовых групп цена товара разная
- модель Товар - Item (наименование товара, описание, все, кроме цены)
- модель-свзяка Ценовой группы и Товара - называется PriceGroupLine (тут связка id товара-id ценовой группы + цена товара)
Я хочу, что бы при выводе вьюхи для Customer, в этой же вьюхе выводилась:
1. Ценовая группа (т.е. наименование из модели PriceGroup)
2. Товары этой ценовой группы (наименование из Item, цена из PriceGroupLine)
Это все разные модели, как обеспечить их взаимодействие. Я новичок в этом деле, даже не могу понять, куда думать. Подскажите, пожалуйста!
Модель Item
Код:
class Item < ActiveRecord::Base
has_many :price_group_lines
has_many :price_groups, through: :price_group_lines
attr_accessible :item_name, :item_id
validates :item_name, presence: true
def to_label
"#{item_name}"
end
end
class PriceGroup < ActiveRecord::Base
has_many :customers
has_many :price_group_lines
has_many :items, through: :price_group_lines
attr_accessible :price_group_name
validates :price_group_name, presence: true
def to_label
"#{price_group_name}"
end
end
class PriceGroupLine < ActiveRecord::Base
belongs_to :item
belongs_to :price_group
attr_accessible :item_id, :price_group_id, :price, :item, :price_group
validates :price, :item_id, :price_group_id, presence: true
end
has_many :price_group_lines
has_many :price_groups, through: :price_group_lines
attr_accessible :item_name, :item_id
validates :item_name, presence: true
def to_label
"#{item_name}"
end
end
class PriceGroup < ActiveRecord::Base
has_many :customers
has_many :price_group_lines
has_many :items, through: :price_group_lines
attr_accessible :price_group_name
validates :price_group_name, presence: true
def to_label
"#{price_group_name}"
end
end
class PriceGroupLine < ActiveRecord::Base
belongs_to :item
belongs_to :price_group
attr_accessible :item_id, :price_group_id, :price, :item, :price_group
validates :price, :item_id, :price_group_id, presence: true
end
Вьюха контроллера Price Group
Код:
<h1> Ценовая группа </h1>
<p> <%= @pg.price_group_name %> </p> <br>
<% @pg.items.each do |i|%>
<%= i.item_name %>
<% end %>
<br>
<%= link_to "Список групп", price_groups_path %>
<p> <%= @pg.price_group_name %> </p> <br>
<% @pg.items.each do |i|%>
<%= i.item_name %>
<% end %>
<br>
<%= link_to "Список групп", price_groups_path %>
Разобрался с ассоциациями, могу выводить в цикле наименования товаров, не знаю как обратиться к цене в модели Price Group Line