2014-04-01 54 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 
) 

不完全是一个班轮,但它可以节省一些空间...

相关问题