如何验证 has_one 关联是否存在?

use*_*603 2 validation ruby-on-rails ruby-on-rails-5

我有两个Person型号Address

class Person < ApplicationRecord
    has_one :address
end
Run Code Online (Sandbox Code Playgroud)
class Address < ApplicationRecord
    belongs_to :person
end
Run Code Online (Sandbox Code Playgroud)

我如何验证每个点都指向另一个?

我想做类似的事情:

class Person < ApplicationRecord
    has_one :address
    validates :address, presence: true
end
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用,因为address不是 上的属性Person

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

Rob*_*ise 5

class Person < ApplicationRecord
    has_one :address, required: true
end
Run Code Online (Sandbox Code Playgroud)
class Address < ApplicationRecord
    belongs_to :person
end
Run Code Online (Sandbox Code Playgroud)

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

belongs_to在 Rails 5 中现在是自动必需的,因此您不需要在其中放置任何不同的内容Address.