Рельсовое объединение, вложенные формы и ИППП - PullRequest
0 голосов
/ 20 сентября 2018

Вот мои упрощенные модели

class Offer < ApplicationRecord
  has_many :rooms
end

class Room < ApplicationRecord
  belongs_to :offer
end

class Kitchen < Room
end

Я использую STI для кухни, потому что это казалось правильным способом выразить то, что я хотел сделать (я, вероятно, ошибаюсь).

Я хочу создать предложение с номерами в нем.У меня есть «обычные» комнаты, которые являются экземплярами Room напрямую, и более определенные комнаты, такие как Kitchen, которые могут иметь дополнительный атрибут.

Я использую кокон для создания вложенной формы, он прекрасно работает для созданияпредложить и добавить обычные номера.Но как я могу добавить кухни?

Может быть, это проблема архитектуры больше, чем проблема реализации.Как тебе удалось бы сделать что-то подобное?

1 Ответ

0 голосов
/ 21 сентября 2018

Одним из решений будет добавление столбца JSONB data в таблицу rooms.Затем вы можете использовать jsonb_accessor gem для элегантного управления ИППП.

Я предполагаю, что у вас уже есть столбец type, поэтому вы можете сделать что-то вроде:

Kitchen.create(offer_id: 1, name: "Great Kitchen", description: "It is great!")

Примечание: description будет атрибутом столбца JSONB data.Кроме того, вы можете создавать индексы для атрибутов JSONB и даже выполнять запросы.Исходя из моего опыта, вы хотите сохранить JSONB как место для хранения дополнительной информации и меньше для сложных запросов.

Надеюсь, это поможет.

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