Как мне проверить, что ассоциация has_one существует? - PullRequest
1 голос
/ 09 июля 2019

У меня есть две модели Person и Address:

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 ]

1 голос
/ 10 июля 2019
class Person < ApplicationRecord
    has_one :address, required: true
end
class Address < ApplicationRecord
    belongs_to :person
end

См. Параметр required в разделе параметров https://apidock.com/rails/v5.2.3/ActiveRecord/Associations/ClassMethods/has_one

belongs_to в Rails 5 теперь требуется автоматически, поэтому вам не нужно ставитьчто-то другое внутри Address.

0 голосов
/ 10 июля 2019

Вам нужно использовать validates_associated :address для проверки ассоциаций

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...