2016-07-26 2 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]이 값이 있는지 알고 동안, 이름을 포함하는 I 컨트롤러로 전달됩니다. 필터링 된 것 같습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+1

당신이 PARAMS 콘솔 전체 해시를 얻고있다 PARAMS 무엇을 게시하시기 바랍니다 수 –

+0

@Deepak 여기 PARAMS의 해시 'controller'=> 'my_model', 'action'= 'false', 'start'=> 'false'} => "new", "virtual_attr"=> > "만들기"}'. 모든 것이 거기에있다. – alexs333

답변

4

이 PARAMS에 따르면

당신은 강한 PARAMS을 변경해야
{"name"=>"New", "virtual_attr"=>{"enable"=>"false", "start"=>"false"}, "controller"=>"my_model", "action"=>"create"} 

는 :

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