Как принять вложенные модели: через has_many с Devise в Rails 3 - PullRequest
0 голосов
/ 26 октября 2011

У меня следующая структура, и я пытаюсь создать как минимум 1 адрес (с активной проверкой) при регистрации пользователя устройства. Пользователь сохраняется нормально без проверки адреса и, несмотря на тот факт, что он действителен, он отбрасывается. Я проверил и подтвердил, что могу получить доступ к адресам и добавить их через консоль через user.addresses << Address.new(...), но не через форму. Я не уверен, что здесь происходит.

Есть идеи? Любая / вся помощь будет принята с благодарностью - спасибо!

Модели / user.rb

class User < ActiveRecord::Base
  has_many :user_addresses
  has_many :addresses, :through => :user_addresses
  ...
  attr_accessible ..., :addresses
  accepts_nested_attributes_for :addresses
end

Модели / user_addresses.rb

class UserAddress < ActiveRecord::Base
  belongs_to :address
  belongs_to :user
end

Вид / регистрация / new.html.haml

- resource.addresses.build if resource.addresses.empty?
= semantic_form_for resource, :as=> resource_name, :url => registration_path(resource_name) do |f|
  = devise_error_messages!
  ...
  = f.inputs :name => "Addresses", :id=> "addresses" do
    = f.semantic_fields_for :addresses do |a|
      ...

1 Ответ

1 голос
/ 26 октября 2011

Я бы попробовал две вещи:

  1. Проверьте свой журнал и посмотрите, есть ли предупреждение о невозможности массового присвоения атрибутов.
  2. Добавьте: address_attributes к вашему attr_accessible
...