验证belongs_to关联

And*_*rao 2 validation model ruby-on-rails

我正在尝试验证像这样的模型学生;

class Student < ActiveRecord::Base
  belongs_to :room
end
Run Code Online (Sandbox Code Playgroud)

我想确保Room是一个有效的模型,并且只有在房间有效的情况下我才能保存学生.

我试图将关联更改为:

belongs_to :room, :validate => true
Run Code Online (Sandbox Code Playgroud)

但它没有改变行为..API说:

:validate
  If false, don’t validate the associated objects when saving the parent object. false by default.
Run Code Online (Sandbox Code Playgroud)

所以我将验证更改为空间:

class Room < ActiveRecord::Base
  has_many :students, :validate => true
end
Run Code Online (Sandbox Code Playgroud)

但这两种选择都没有解决我

有任何想法吗???

Jon*_* M. 6

试一试......

class Student < ActiveRecord::Base
  belongs_to :room
  validates_associated :room
end
Run Code Online (Sandbox Code Playgroud)

我正在查看API文档的这一部分:http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-validates_associated

此外,要注意不要使用验证在两个协会的两侧!