Rails: уникальная проверка с вложенными атрибутами - PullRequest
1 голос
/ 24 января 2020
Table 1 - Product

has_many :widget_groups
accepts_nested_attributes_for :produts_widget_groups

validates_uniqueness_of :name, on: :create,
                                     if: proc { |product| product.has_category? }

Table 2 - ProductsWidgetGroup

belongs_to :product
belongs_to :widget_group
has_many :products_widget_group_deatils

Table 3 - ProductsWidgetGroupDetail

belongs_to :products_widget_group
belongs_to :product
accepts_nested_attributes_for :product

У меня есть форма, которую я использую для сохранения продукта в (таблица 1) и отправки вложенных атрибутов для таблицы 2 и таблицы 3.

Здесь я пытаюсь поместить проверка уникального имени для продукта, который мы сохраняем через таблицу 3, но у меня есть некоторые проблемы с этим.

Мне нужно получить сообщение об ошибке проверки модели для объекта продукта из таблицы 1, тогда только я могу показать им ошибка в конце Но здесь сообщение об ошибке валидации идет к объекту продукта таблицы 3. Есть ли в любом случае, мы можем достичь этого?

1 Ответ

0 голосов
/ 24 января 2020

С этим вы получите :product=>["is invalid"], который, я думаю, это не то, что вы ищете:

class ProductsWidgetGroupDetail
  validates_associated :product

Но вы также можете попробовать что-то вроде этого:

class ProductsWidgetGroupDetail
  validates :product_validation

  private

  def product_validation
    @errors.merge!(product.instance_variable_get(:@errors))     
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...