Я застрял, борясь с богатыми таблицами соединений в Rails 5, и мне нужна помощь, чтобы начать работу Приложение, которое я пишу, поможет мне отследить, какие из поставщиков нашей компании несут какие бренды продуктов. Поскольку мне также необходимо отслеживать, является ли каждый поставщик авторизованным или неавторизованным для каждого из брендов, которые он продает, и несут ли они эти бренды на складе, я подумал, что лучшим подходом было бы использовать объединяющую таблицу и хранить там атрибуты. Другими словами:
Suppliers <---> Lines <---> Brands
Помимо ссылок на внешние ключи для Supplier
и Brand
, запись Line
также имеет два логических атрибута: .is_authorized
и .carries_stock
.
Мои модели:
/ модели / supplier.rb
class Supplier < ApplicationRecord
has_many :lines, :dependent => :destroy
has_many :brands, :through => :lines
accepts_nested_attributes_for :lines
end
/ модели / brand.rb
class Brand < ApplicationRecord
has_many :lines, :dependent => :destroy
has_many :suppliers, :through => :lines
end
/ модели / line.rb
class Line < ApplicationRecord
belongs_to :supplier
belongs_to :brand
validates_presence_of :supplier
validates_presence_of :brand
end
Я смог настроить форму редактирования контроллера и поставщика, чтобы разрешить создание записей в таблице Lines
, но не знаю, как разрешить пользователям редактировать атрибуты .is_authorized
и .carries_stock
. Мне удалось заставить работать форму создания / редактирования поставщика, добавив следующий фрагмент:
/ вид / поставщики / _form.html.erb
<h4>Brands</h4>
<%= form.collection_check_boxes(:brand_ids, Brand.all, :id, :name) do |b| %>
<%= b.label class:"label-checkbox" do%>
<%= b.check_box + b.text%>
<%end%>
<br />
<% end %>
Форма выглядит сейчас , но не позволяет мне редактировать расширенные атрибуты .is_authorized
и .carries_stock
. Я бы хотел, чтобы форма выглядела примерно так . Куда мне идти отсюда?
Спасибо !!!