我遇到了以這種方式創建自動對象的麻煩。請考慮以下型號:Rails 4級聯保存與驗證在belongs_to上的關聯
class SearchTerm < ActiveRecord::Base
has_many :search_term_occurrences, dependent: :destroy
end
class SearchTermOccurrence < ActiveRecord::Base
belongs_to :search_term
validates :search_term, presence: true # Problematic validation
validates_associated :search_term # See Gotchas in answer
end
所以,當我嘗試做以下操作:
term = SearchTerm.new term: 'something'
term.search_term_occurrences << [SearchTermOccurrence.new, SearchTermOccurrence.new]
term.save!
我得到如下:
ActiveRecord::RecordInvalid: Validation failed: Search term occurrences is invalid, Search term occurrences is invalid
但是,當我忽略對belongs_to的SEARCH_TERM驗證。一切都妥善保存。
我的問題是:如何保存父對象及其關聯(新創建),同時對子對象進行驗證而不一個一個地保存關聯對象,然後在事務內保存父對象?我想讓Rails處理事務邏輯。
'belongs_to'關聯默認有一個存在驗證 - 您不需要添加一個 – ArtOfCode
這是不正確的。我仍然可以在不使用SearchTerm的情況下自行保存SearchTermOccurrence。 –