Связанное наследование атрибутов модели
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