从params hash中提取值:聪明的方式

时间:2013-06-18 17:48:28

标签: ruby-on-rails ruby params

我的控制器中有以下代码:

login = params[:user_registration][:login]
password = params[:user_registration][:password]
email = params[:user_registration][:email]

它过于冗长和丑陋,是否有任何更智能的方式来提取我需要的密钥?

4 个答案:

答案 0 :(得分:4)

也许这个?

login, password, email = params[:user_registration].values_at :login, :password, :email

答案 1 :(得分:1)

在类中封装属性可能是值得的,如果你确实没有。也许是UserRegistration类?那你可以做;

@new_user = UserRegistration.new(params[:user_registration])

这样可以将属性传递给模型和视图也更方便。

答案 2 :(得分:0)

将它们打包在一起,只在需要时覆盖

attrs = params[:user_registriation]
attrs.email.downcase! # Only overwrite on selected attr when needed.

答案 3 :(得分:0)

我经常这样做:

user_params = [:login, :password, :email]

User.new(params.select {|v| user_params.include?(v)})

这只传递了创建模型所需的参数,并且可以清楚地阅读。