2016-07-26 57 views
1

我有持久化名稱屬性和虛擬屬性的ActiveRecord模型。Rails強壯的參數 - 接受虛擬屬性

class MyModel < ActiveRecord::Base 
validates :name, length: { minimum: 1 }, presence: true 

def virtual_attr=(value) 
    # set something 
end 

def virtual_attr 
    # get something 
end 
end 

在我的控制,我指定強大的參數:

def my_model_params 
    params.permit(:name, :virtual_attr) 
    end 

當我試圖創建/更新我的模型,my_model_params只包含一個名字,雖然我知道params[:virtual_attr]具有的價值,我傳遞給控制器​​。它似乎只是被過濾掉了。我究竟做錯了什麼?

+1

可以請你張貼的內容PARAMS你得到的控制檯完成PARAMS哈希 –

+0

@Deepak這裏是PARAMS哈希:「{」name「=>」New「,」virtual_attr「=> {」enable「=>」false「,」start「=>」false「},」controller「=>」my_model「,」action「= > 「創建」}'。它在那裏 – alexs333

回答

4

根據這些PARAMS

{"name"=>"New", "virtual_attr"=>{"enable"=>"false", "start"=>"false"}, "controller"=>"my_model", "action"=>"create"} 

您需要更改強PARAMS到:

def my_model_params 
    params.permit(:name, virtual_attr: [:enable, :start]) 
end