我的控制器中有以下代码:
login = params[:user_registration][:login]
password = params[:user_registration][:password]
email = params[:user_registration][:email]
它过于冗长和丑陋,是否有任何更智能的方式来提取我需要的密钥?
答案 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)})
这只传递了创建模型所需的参数,并且可以清楚地阅读。