У меня есть сценарий, в котором мне нужно сохранить имя связанной записи в текущем объекте.
Учтите, что у меня есть столбец JSON, и у меня есть идентификатор другой таблицы внутри этого столбца JSON.
Например, запрос:
users: {
name: 'test',
additional_details: { another_table_id: 1}
}
Что мне нужно сделать, это проверить, есть ли у другой таблицы этот id (запрос).
Итак, ядобавил пользовательскую ассоциацию в пользовательскую модель,
validates :validate_additional_table
def validate_additional_table
a_t = AnotherTable.where(id: additional_details['another_table_id']).first
if a_t.present?
additional_details.merge!(another_table_record_name: a_t.name) # Is it a good practice?
else
errors.add(:base, 'record is invalid')
end
end
Я добавил некоторую другую логику (проверьте комментарий в приведенном выше валидаторе).Является ли это наилучшей практикой, если в валидаторе помимо логики проверки есть что-то еще?