Как проверить отношения has_one? - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть эти две модели

User.rb

has_one :bike

Bike.rb

belongs_to :user

Если user пытается создать несколько bikes, то отношение has_one не имеет смысла.

Как добавить проверку для этого условия на уровне модели?

Как можноЯ уверен, что у user всегда будет один велосипед?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Вы можете просто добавить validates_uniqueness_of вызов для вашей Bike модели.

class Bike < ApplicationRecord
  belongs_to :user

  validates_uniqueness_of :user_id
end
0 голосов
/ 11 февраля 2019

Создание обратного вызова before_create в файле bike.rb .Проверьте, есть ли у current_user.bike какая-либо запись или нет.Если запись существует, добавьте ошибку и верните.

class Bike < ApplicationRecord

  # Associations
  has_one :user

  before_create :user_exists

  private
  def user_exists
    if self.user.bike.present?
      errors[:base] << "Add your validation message here"
      return false
    end
  end

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