Rails是否允許validates_associated的條件驗證?我在Rails 4.2.0上看到以下內容。我試圖做錯嗎?Rails是否允許validates_associated的條件驗證?
型號:
class User < ActiveRecord::Base
has_many :books
validates_associated :books, if: :should_validate_book?
def should_validate_book?
return false
end
end
class Book < ActiveRecord::Base
belongs_to :user
validates_presence_of :title
end
在書的標題屬性的存在驗證仍然運行(Rails的控制檯):
> u = User.create!
=> #<User id: 2, created_at: "2015-02-24 19:34:51", updated_at: "2015-02-24 19:34:51">
> u.books.build
=> #<Book id: nil, user_id: 3, title: nil, created_at: nil, updated_at: nil>
> u.valid?
=> false
> u.books.first.errors
=> #<ActiveModel::Errors:0x007fa256b210d8 @base=#<Book id: nil, user_id: 3, title: nil, created_at: nil, updated_at: nil>, @messages={:title=>["can't be blank"]}>
問題中的代碼只是我寫的一個簡單的模型,用來說明我看到的使用validates_associated的行爲,所以我仍然認爲validates_associated是一條路。鏈接的頁面顯示方法簽名'validates_associated(* attr_names)public',這意味着它允許單個屬性。我錯過了什麼嗎?謝謝! – Readonly 2015-02-25 00:12:25