我的控制器中有以下代码:
login = params[:user_registration][:login]
password = params[:user_registration][:password]
email = params[:user_registration][:email]
它太冗长和丑陋,有什么更聪明的方法来提取我需要的密钥吗?
我的控制器中有以下代码:
login = params[:user_registration][:login]
password = params[:user_registration][:password]
email = params[:user_registration][:email]
它太冗长和丑陋,有什么更聪明的方法来提取我需要的密钥吗?
也许这个?
login, password, email = params[:user_registration].values_at :login, :password, :email
如果您确实还没有属性,那么将属性封装在一个类中可能是值得的。也许是 UserRegistration 类?然后你可以做;
@new_user = UserRegistration.new(params[:user_registration])
这将使将属性传递给模型和视图也更加方便。
将它们打包在一起,仅在需要时覆盖
attrs = params[:user_registriation]
attrs.email.downcase! # Only overwrite on selected attr when needed.
我经常这样做:
user_params = [:login, :password, :email]
User.new(params.select {|v| user_params.include?(v)})
这仅传递创建模型所需的参数,并且易于阅读。