我如何接受以下嵌套模型:通过has_many和Rails 3中的Devise

时间:2011-10-25 23:34:00

标签: ruby-on-rails ruby-on-rails-3 devise formtastic

我有以下结构,我正在尝试在设备注册时创建至少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 个答案:

答案 0 :(得分:1)

我会尝试两件事:

  1. 检查您的日志,看看是否有关于无法批量分配属性的警告。
  2. 将地址_属性添加到您的attr_accessible