2016-02-04 56 views

回答

1

如果你看一下在GitHub上源,你可以看到,在內部它使用了私有方法write_attribute_with_type_cast

https://github.com/rails/rails/blob/8fdd4bf761b280126e52a212eed187391bdedbb3/activerecord/lib/active_record/attribute_methods/write.rb#L55

這使您對自己剛剛打電話self[:attribute]=value中,如果你是一個優勢設置爲id,或者您認爲應該是id,則該方法將處理查找模型主鍵的正確屬性名稱。

最後,通過write_from_user,軌道實際上是調用與事物有不同的名稱self[:attribute] = value你,雖然:

https://github.com/rails/rails/blob/8fdd4bf761b280126e52a212eed187391bdedbb3/activerecord/lib/active_record/attribute_set.rb#L38

超越:id自動校正:custom_primary_key如果模型沒有使用標準id列作爲其主鍵,但使用write_attribute而不是self[:attribute]=value的功能優勢。

相關問題