此特定课程的以下两个片段之间是否有区别?
class MyObjectClass < ActiveRecord::Base
belongs_to :address
end
# Snippet 1
my_obj.address = nil
my_obj.save
# Snippet 2
my_obj.update_attributes {address: nil}
答案 0 :(得分:4)
如果你只是在谈论将地址字段设置为nil,那么在幕后他们基本上都在做同样的事情。
答案 1 :(得分:1)
它们之间没有任何区别。如果您使用过my_obj.update_attributes(params [:my_object]),那么当您处理质量分配时Spikes答案是正确的,但是在代码段2中,您只更新了地址属性,因此它们是相同的。
答案 2 :(得分:-1)
代码段2受质量分配安全保护。 More details are in the Rails security guide.代码段2也skips validations and callbacks.