我有兩個型號,結構如下:Rails的「assign_attributes」不分配嵌套模型
class Wallet < ActiveRecord::Base
include ActiveModel::Validations
has_one :credit_card
accepts_nested_attributes_for :credit_card
validates :credit_card, :presence => true
validates_associated :credit_card
...
end
class CreditCard < ActiveRecord::Base
include ActiveModel::Validations
belongs_to :wallet
validates :card_number, :presence => true
validates :expiration_date, :presence => true
...
end
我測試我使用RSpec應用程序的功能,我發現了一些奇怪的。如果我使用不符合嵌套模型的驗證條件的屬性創建哈希(例如沒有卡號),然後嘗試執行update_attributes
調用,那麼我使用無效的CreditCard返回的錢包對象中返回的內容嵌套模型和適當的錯誤。這是正確的,預期的行爲。
如果我採取相同的哈希雖然和運行assign_attributes
,然後save
(這是所有update_attributes方法應該做的事,然後我得到返回無效錢包對象與完全無嵌套的對象。這是爲什麼?如何才能我更新所有嵌套的屬性值,並檢查錯誤,不保存
該鏈接似乎是相反的(即等號是跳過安全檢查的函數)。我不明白爲什麼會導致我所看到的行爲。 – Bryce