#ruby-on-rails #activerecord
#ruby-on-rails #activerecord
Вопрос:
Я пытаюсь настроить свой собственный метод для переопределения свойства базы данных, чтобы я мог перехватывать значение, в котором значение базы данных равно нулю.
Кажется, что Rails позволяет мне устанавливать метод с тем же именем, что и столбец базы данных, однако мне понадобится альтернативный способ доступа к значению базы данных, чтобы вернуть то, что я хочу.
Представьте, что у меня есть столбец базы данных «дата», и я хочу установить для него что-то другое, когда оно равно нулю в базе данных.
Я хотел бы установить метод, как показано ниже
def date
if (alternative_db_value_object).date == nil
"Put this"
else
"Put that"
end
end
В качестве альтернативы я был бы очень признателен, если бы кто-нибудь мог предложить лучший способ сделать это.
Ответ №1:
.. в методе ‘date’ вы можете использовать
self[:date]
или
read_attribute(:date)
ОБНОВЛЕНИЕ: похоже, это больше не работает на rails 5. Предполагается использовать super
:
def length=(minutes)
super(minutes.to_i * 60)
end
def length
super / 60
end
Комментарии:
1. этот метод уже удален !! есть альтернативы? apidock.com/rails/ActiveRecord/AttributeMethods/Read /…