あなたのユーザーコントローラにいて、使用可能ないくつかのパラメータに基づいて@userという名前を変更したいとします。Rails 3では、=とassign_attributesに違いはありますか?
私は、次のいずれかの間に差があるかどうかを知りたい:事前に
@user.name = params[:user][:name]
または
@user.assign_attributes({:name=> params[:user][:name]})
感謝を!
あなたのユーザーコントローラにいて、使用可能ないくつかのパラメータに基づいて@userという名前を変更したいとします。Rails 3では、=とassign_attributesに違いはありますか?
私は、次のいずれかの間に差があるかどうかを知りたい:事前に
@user.name = params[:user][:name]
または
@user.assign_attributes({:name=> params[:user][:name]})
感謝を!
このような質問を理解するには、sourceに潜んでください。私はactiverecord/lib/active_record/attribute_assignment.rb
Check it out here.
assign_attributes
方法は、実際のパラメータによってちょうどループが与えられます方法を発見し、あなたのモデルに:name=
メッセージを送信します。ただし、多くの属性を割り当てる可能性があるため、大量割り当ての予防措置が考慮されます。 (つまり、属性がattr_accessible
と表示されていることを確認してください)。
=
(例:@user.name = params[:user][:name]
)は、セキュリティチェックなしで属性セッターを直接呼び出します。渡された値のためのassign_attributes
チェックセキュリティ
RailsのAPIからassign_attributesについて:。
あなたは、属性のハッシュを渡すことによって、特定の質量割り当て セキュリティロールのすべての属性を設定することができます の属性名(これも列名と一致します)と のロール名に一致するキーを:asオプションを使用して使用します。