2013-04-03 117 views
1

我正在構建一個嵌套的模型表單,它將允許客戶端同時註冊(客戶端模型)並創建一個登錄名(用戶模型)。但是,對於新註冊人,我想設置user.role_code(對於管理員來說稱爲「A」),但我一直在爲此付出努力。從數據模型的角度來看,客戶端有多個用戶,因爲註冊後,客戶端可以訪問應用程序來添加其他用戶。從這個角度來看,我不認爲我可以在模型中默認user_role,因爲對於添加的用戶來說,他們的role_code可能是不同的。我想在控制器中設置默認值。Rails - 爲嵌套模型屬性設置默認值

此外,表單提交後,用戶作爲一個數組發送,所以我想確保只有一個用戶數組對象在註冊時發送(明顯是爲了漏洞的原因)。

這裏是我的代碼

#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"=>..." 

回答

0

找到它!多進行調查後,谷歌搜索,拔出我的頭髮,和整個Get nested params最後到來,答案如下:

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

,並測試用戶數組對象的數量,使用下面的

if @client.users.size != 1 
... 
end