如何验证has_one关联存在?

时间:2019-07-09 13:15:45

标签: ruby-on-rails validation ruby-on-rails-5

我有两个模型PersonAddress

class Person < ApplicationRecord
    has_one :address
end
class Address < ApplicationRecord
    belongs_to :person
end

我如何验证彼此指向对方?

我想做类似的事情:

class Person < ApplicationRecord
    has_one :address
    validates :address, presence: true
end

这当然是行不通的,因为address不是Person上的属性。

Rails中确保记录与另一条记录有效关联的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

class Person < ApplicationRecord
    has_one :address, required: true
end
class Address < ApplicationRecord
    belongs_to :person
end

请参见https://apidock.com/rails/v5.2.3/ActiveRecord/Associations/ClassMethods/has_one的选项部分中的required

现在自动需要Rails 5中的

belongs_to,因此您无需在Address.

内放入任何其他内容

答案 1 :(得分:0)

您需要使用validates_associated :address来验证关联