0

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

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

它太冗长和丑陋,有什么更聪明的方法来提取我需要的密钥吗?

4

4 回答 4

4

也许这个?

login, password, email = params[:user_registration].values_at :login, :password, :email
于 2013-06-18T17:53:33.057 回答
1

如果您确实还没有属性,那么将属性封装在一个类中可能是值得的。也许是 UserRegistration 类?然后你可以做;

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

这将使将属性传递给模型和视图也更加方便。

于 2013-06-18T18:11:17.813 回答
0

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

attrs = params[:user_registriation]
attrs.email.downcase! # Only overwrite on selected attr when needed.
于 2013-06-18T18:19:43.977 回答
0

我经常这样做:

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

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

这仅传递创建模型所需的参数,并且易于阅读。

于 2015-01-26T18:23:08.227 回答