Devise - Вложени атрибути - Клиент --› Customer_addresses --› Адрес

Опитвам се да създам връзка като базата данни, посочена по-долу, използвайки devise за създаване на таблицата Customer. Създадох миграции за другите таблици, използвайки ID ing въпреки имената на таблици и ID. Моите модели изглеждат по-долу. Знам, че прекалих с отношенията has_many, но опитвах това цял ден.

Може ли някой да помогне или да покаже правилния начин за настройка на това, така че да мога да създавам, редактирам и актуализирам адреси на потребителя. Постигнах успех с прости вложени атрибути, например Customer/ Direct to address, но когато поставя таблицата в средата, просто не мога да накарам атрибутите на адреса да се показват или актуализират.

Предполагам, че има по-сложен метод за редактиране, създаване, унищожаване, който също трябва да бъде внедрен.

Също така се губя с това как да разреша силни параметри на този тип влагане, тъй като повечето примери, които мога да намеря, са свързани само с таблици, които съдържат user_id в тях, а не такава, която е свързана чрез друга таблица.

браво предварително за насоките.

Изображение на DataModel тук

Таблици клиенти / Създаване на таблици по подразбиране

customer_addresses id address_id address_type_id customer_id

адреси id адрес xzy Marua Road други подробности / Предна къща

address_type id адрес_тип / дом, бизнес и т.н. адрес_тип_описание / къде живеете и т.н.

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


person Jason Moreland Digitalrecline    schedule 25.05.2015    source източник


Отговори (1)


Асоциациите, които дефинирахте, трябваше да са както следва

class Customer
  has_many :customer_addresses
  has_many :addresses, :through => :customer_addresses
  has_many :address_types, :through => :customer_addresses
end

class Address
  has_many :customer_addresses
  has_many :customers, :through => :customer_addresses
  has_many :address_types, :through => :customer_addresses
end

class AddressType
  has_many :customer_addresses
  has_many :customers, :through => :customer_addresses
  has_many :addresses, :through => :customer_addresses
end

class CustomerAddress
  belongs_to :customer
  belongs_to :address
  belongs_to :address_type
end
person Kamesh    schedule 25.05.2015
comment
наздраве Ще го пробвам. - person Jason Moreland Digitalrecline; 25.05.2015
comment
Все още има проблеми с достигането до адресното поле. Но по-далеч от преди. - person Jason Moreland Digitalrecline; 25.05.2015
comment
Имате добавен фрагмент от формуляр. получава address_id от таблицата user_address, но изглежда може да го накара да премине на следващата стъпка и да изтегли от таблицата с адреси. - person Jason Moreland Digitalrecline; 25.05.2015
comment
приближавам се. Свържете го с формуляра сега и показва съхранена информация :-))) огромно подобрение. Просто не мога да го накарам да спаси. Необходимо е за добавяне на колона user_addresses_id към адресната таблица. - person Jason Moreland Digitalrecline; 25.05.2015
comment
Страхотни неща вървят към работа. Ще пусна пълната версия сутринта. Наздраве за тласъка в правилната посока. :-) опитах да гласувам за, но каза, че имам нужда от още представители. - person Jason Moreland Digitalrecline; 25.05.2015