Наследовать значения базы данных из связанной записи по умолчанию - PullRequest
0 голосов
/ 07 марта 2020

Я пытаюсь установить связь между объектами одного и того же класса, где «издание» наследует все значения от мастера, если это поле не присутствует в издании. Вот связь в модели:

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 объектно-ориентированный смысл.

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