0
This section說:爲什麼`validates_associated`存在? railsguide的
當你的模型與其他模型協會,他們也需要驗證您應該使用這個幫手。
所以我認爲關聯模型的驗證不會運行沒有validates_associated
。
但實際上,它沒有它運行。
有兩種模式,學校和學生。
class School < ActiveRecord::Base
has_many :students
validates :name, presence: true
end
class Student < ActiveRecord::Base
belongs_to :school
validates :name, presence: true
end
on Rails的控制檯,
school = School.new
=> #<School id: nil, name: nil, created_at: nil, updated_at: nil>
school.students << Student.new
=> #<ActiveRecord::Associations::CollectionProxy [#<Student id: nil, name: nil, school_id: nil, created_at: nil, updated_at: nil>]>
school.name = "test shcool"
=> "test shcool"
school.save
(0.1ms) begin transaction
(0.1ms) rollback transaction
=> false
school.errors.full_messages
=> ["Students is invalid"]
如果有validates_associated象下面這樣:
class School < ActiveRecord::Base
has_many :students
validates :name, presence: true
validates_associated :students
end
class Student < ActiveRecord::Base
belongs_to :school
validates :name, presence: true
end
on Rails的控制檯,我作爲上面完全相同的命令。但是最後的命令school.errors.full_messages
返回了不同的結果。 (奇怪的是,有重複的錯誤消息。)
school.errors.full_messages
=> ["Students is invalid", "Students is invalid"]
我的問題是
這是一個RailsGuide的錯誤呢?
爲什麼
validates_associated
存在?
或者我有什麼錯誤的想法?
我的環境是
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin14.0]
Rails 4.2.0
謝謝,Coderhs之前! – tarky 2015-03-02 06:59:19
但是,正如我上面寫的,即使沒有'validates_associated',關聯對象的驗證運行。 – tarky 2015-03-02 07:00:32
@tarky第一個模式不會保存,除非兒童模態保存。 – coderhs 2015-03-02 07:18:43