Я пытаюсь установить связь между объектами одного и того же класса, где «издание» наследует все значения от мастера, если это поле не присутствует в издании. Вот связь в модели:
class Artwork < ApplicationRecord
has_many :editions, class_name: "Artwork", foreign_key: "master_id"
belongs_to :master, class_name: "Artwork", optional: true
end
Вот как я ожидал, что это сработает:
edition = Artwork.create(dimensions: '24in x 24in')
edition.title # => nil
master = Artwork.create(title: 'Foo')
master.editions << edition
edition.title # => 'Foo'
edition.title = 'Bar'
edition.save
edition.title # => 'Bar'
master.title # => 'Foo'
Я думал добавить это внутри класса, но проблема в том, что он указывает только один столбец / метод за один раз:
def title
self.title || master.title
end
Существует ли элегантный способ сделать это с помощью Rails и / или ActiveRecord?
Для ясности, я не имею в виду "наследование" "в классе c объектно-ориентированный смысл.