У меня есть медиасервер, написанный на рельсах, который позволяет пользователям загружать изображения и классифицировать их. Теперь я делаю функциональность планшета, что довольно сложно.Проверять несколько вложенных атрибутов связанных моделей для равенства перед сохранением
Для начала у нас есть модель Template
. Это Template
модель has_many TemplateBlocks
. A TemplateBlock
имеет следующие характеристики: width
, height
, top
, left
и position
. Они выбраны так, чтобы упростить создание кода css и pdf. Таблица TemplateBlock
также содержит столбец для template_id
.
Далее мы имеем Moodboard
который HAS_MANY Documents
через MoodboardImages
class Moodboard < ActiveRecord::Base
has_many :documents, through: :moodboard_images
has_many :moodboard_images, dependent: :destroy
accepts_nested_attributes_for :moodboard_images
end
Таблица MoodboardImages
содержит еще один столбец, являющийся template_block_id
для определения положения в Template
Как теперь все работает отлично, но Мне нужна проверка на создание MoodboardImage
. При сохранении Moodboard
с вложенными атрибутами для MoodboardImages
должно быть ограничение на MoodboardImage
за то же самое template_id
. a Moodboard
, очевидно, не может содержать несколько шаблонов.
Мой вопрос к вам, ребята, как я могу выполнить эту проверку как можно более аккуратную?
Я могу, конечно, написать метод, который захватывает TemplateBlock
из базы данных и временно хранит и сравнивает его before_save
или что-то, но это не очень. Мне было интересно, есть ли «хороший» или «хороший» способ сделать это.
Как ваш 'модель Moodboard' выглядеть? Вы можете добавить проверки там, нет? – sebkkom
Модель Moodboard не является специальной, она имеет только столбец имен. Соотношения делают панель настроения, и я могу добавить проверку в модели Moodboard, но ей нужно запросить шаблон 'MoodBoardImage' шаблона_block_id, чтобы убедиться, что у шаблона_блоков все одинаковое template_id. –