Связанное наследование атрибутов модели

Rails новичок здесь. У меня есть связанные модели Team а также Venue определяется следующим образом:

class Team < ApplicationRecord
  has_many :home_venues, class_name: "Venue"
end

а также

class Venue < ApplicationRecord
  belongs_to :team, optional: true, foreign_key: :team_id
end

Обе модели имеют атрибуты :city а также :region, Когда я звоню team.home_venues.createЯ хотел бы для :city а также :region ценности вновь созданного venue по умолчанию на :city а также :region ценности создания team если не указано иное.

Каков наилучший способ достижения этой функциональности?

1 ответ

Решение

Я бы использовал ловушку before_validation - таким образом вы убедитесь, что все проверки выполняются в правильное время. В вашем Venue модель:

before_validation :set_default_values

def set_default_values
  self.city ||= self.team.try(:city)
  self.region ||= self.team.try(:region)
end
Другие вопросы по тегам