2014-04-01 56 views
4

我試圖強制我的控制器在通過時需要幾個不同的參數。任何想法如何在一行中做到這一點? (或適當的方式做到這一點)需要多個強參數

params.require(:facebook_message).require(:access_token) 
params.require(:facebook_message).require(:facebook_user_id) 
params.require(:facebook_message).require(:message_body) 
params.require(:facebook_message).permit(
    :access_token, :facebook_user_id, :message_body, :message_subject 
) 

回答

2

params.require目前只允許一個參數:

### File actionpack/lib/action_controller/metal/strong_parameters.rb, line 182 
def require(key) 
    self[key].presence || raise(ParameterMissing.new(key)) 
end 
+0

它只允許一個參數:「錯誤的參數數量(3爲1)」 – Rob

+2

你是對的。也許你可以用一個塊來設置它們,但它不會爲你保存任何只有三個必需參數的行。 – JustinParker

1
%i(access_token facebook_user_id message_body).each do |param_key| 
    params.require(:facebook_message).require(param_key) 
end 
params.require(:facebook_message).permit(
    :access_token, :facebook_user_id, :message_body, :message_subject 
) 

不完全是一個班輪,但它可以節省一些空間...

相關問題