1

我正在构建一个嵌套模型表单,它允许客户端注册(客户端模型)并同时创建登录(用户模型)。但是,对于新注册者,我想设置 user.role_code(对管理员说“A”),但我一直在努力解决这个问题。从数据模型的角度来看,客户端有多个用户,因为注册后,客户端可以访问应用程序添加其他用户。从这个角度来看,我认为我不能在模型中默认 user_role,因为对于添加的用户,他们的 role_code 可能会有所不同。我想在控制器中设置默认值。

此外,在提交表单后,用户作为数组发送,所以我想确保在注册时只发送一个用户数组对象(显然是出于漏洞原因)。

这是我的代码

#client registration form new.html
<%= form_for @client do |client_form| %>
.....
    <%= client_form.fields_for :users do |user_form| %>
        <div class="field">
            <%= user_form.label :first_name %>
            <%= user_form.text_field :first_name %>
        </div>  
.....       
#client Controller

  def create
    logger.info params.inspect
    @client = Client.new(params[:client])

    if @client.save
    ......   

#client model
class Client < ActiveRecord::Base

  attr_accessible :business_name, ... #and more
  attr_accessible :users_attributes

  has_many :users
  has_many :items

  accepts_nested_attributes_for :users, allow_destroy: true

#logger.info params.inspect
"...users_attributes"=>{"0"=>{"first_name"=>..." 
4

1 回答 1

0

找到了!!!经过大量研究,谷歌搜索,拔出我的头发,最后遇到Get nested params,答案如下:

@client.users.first.role_code = "A"

并测试用户数组对象的数量,使用以下

if @client.users.size != 1
...
end
于 2013-04-03T02:33:19.133 回答