Я во второй раз сталкиваюсь со следующим вопросом при написании валидации наличия.
У меня есть 2 модели:
- type — модель-справочник с типами данных
- data — модель с данными
Модель
type:
id
— ключname
— название типа
Модель
data:
id
— ключtype_id
— id типа данныхmain_value
— обязательные данныеopt_value
— опциональные данные (обязательные только для определенного типа)
Как правильно настроить валидацию наличия
opt_value
, при условии что я точно знаю, что определённый
type.name
существует и не меняется?
Я пробовал что-то вроде:
validates_presence_of :opt_value, :if => lambda { self.type_id == get_type_id }
def get_type_id
Type.find_by(name: 'i_know_this_type_exists') # с и без .id
end
Но это не работает.
Я конечно вставляю типы данных в справочник при миграции и знаю какой id получает нужный мне тип, но хардкодить id в проверке (
:if => lambda { self.type_id == 2 }
) совсем пошло на мой взгляд.
Как правильно писать такие проверки?