update_attributes和直接设置为nil之间的区别

时间:2011-08-30 00:05:27

标签: ruby-on-rails ruby associations

此特定课程的以下两个片段之间是否有区别?

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}

3 个答案:

答案 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.