Я пытался создать отношения, такие как база данных, указанная ниже, используя devise для создания таблицы Customer. Я создал миграции для других таблиц, используя идентификатор, используя имена таблиц и идентификатор. Мои модели выглядят так, как показано ниже. Я знаю, что переборщил с отношениями has_many, но я пробовал это весь день.
Может ли кто-нибудь помочь или показать правильный способ настройки, чтобы я мог создавать, редактировать и обновлять адреса пользователя. Мне удалось добиться успеха с помощью простых вложенных атрибутов, например, клиент/прямой адрес, но когда я помещаю таблицу посередине, я просто не могу получить атрибуты адреса для отображения или обновления.
Я предполагаю, что есть более сложный метод редактирования, создания, уничтожения, который также необходимо реализовать.
Я также теряюсь в том, как разрешить сильные параметры для этого типа вложенности, поскольку большинство примеров, которые я могу найти, связаны только с таблицами, которые содержат user_id, а не с той, которая подключена через другую таблицу.
ура заранее для руководства.
Таблицы customers / Таблицы Devise по умолчанию
адреса_клиентов id address_id address_type_id customer_id
адреса id address xzy Marua Road другие детали / Front house
address_type id address_type / Home , Business и т. д. address_type_description / Где вы живете и т. д.
class Customer < ActiveRecord::Base
has_many :customer_addresses
has_many :addresses
has_many :address_types
accepts_nested_attributes_for :customer_addresses
accepts_nested_attributes_for :address_types
accepts_nested_attributes_for :addresses
end
class UserAddress < ActiveRecord::Base
has_many :customer
has_many :address_types
has_many :addresses
end
class AddressType < ActiveRecord::Base
belongs_to :customer_address
end
class Address < ActiveRecord::Base
belongs_to :user_address
end
<div class="field">
<%= f.fields_for :user_addresses do |ff| %>
<div>
<%= ff.label :address_id %><br />
<%= ff.text_field :address_id %>
<%= ff.fields_for :address do |fff| %>
<%= fff.label :address %><br />
<%= fff.text_field :address %>
<% end %>
<% end %>
</div>
</div>
user controller params
def user_params
params.require(:user).permit(:id, :username, :first_name, :last_name, :email, :password, :password_confirmation,
user_address_attributes:[:user_is, :address_id, :address_type_id],
addresses_attributes:[:id, :address, :other_address_details ],
address_type_attributes:[ :id, :address_type])
end