在Rails 3中,=和assign_attributes之间有区别吗?

Por*_*rop 5 ruby-on-rails-3

假设您在用户控制器中,并且希望根据您可以使用的某些参数更改@user用户名.

我想知道以下内容是否有任何区别:

@user.name = params[:user][:name]
Run Code Online (Sandbox Code Playgroud)

要么

@user.assign_attributes({:name=> params[:user][:name]})
Run Code Online (Sandbox Code Playgroud)

提前致谢!

cjh*_*eal 7

找出这样的问题的一个很好的方法就是潜入源头.我在这里找到了检查方法activerecord/lib/active_record/attribute_assignment.rb.

assign_attributes方法实际上只是遍历给定的参数并将:name=消息发送到您的模型.但是,因为您可能分配了许多属性,所以它会考虑质量分配预防措施.(即确保该属性列为attr_accessible).