我已經在我的控制器下面的代碼:提取值:聰明的辦法
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
太好了,謝謝!順便說一句,'user.name,user.password,user.email = params [:user_registration] .values_at:name,:password,:email'?任何方式來跳過在左側任務重複'用戶'? – konnigun
就我個人而言,我通常會爲那種東西編寫一個set_from_params方法或其他命令。在它內部,做一些類似'hash.each {| key,val | __send __(「#{key} =」,val)}'。 –
如果您確實還沒有一個屬性,那麼在一個類中封裝這些屬性可能是值得的。也許是一個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)})
這僅傳遞所必需的創建模型中的參數,它是清楚的讀。
你可以提供一些你想要做的更多細節嗎?例如,如果你正在嘗試創建一個新的'User'記錄,通常我們執行以下操作:'User.new(params [:user])''。我想在你的情況下,它會'User.new(params [:user_registration])' - 不完全確定爲什麼。 – Noz
你有一個UserRegistration類,並且是從它構建的表單嗎? –