Доступ к значениям базы данных отдельно от средств доступа Activerecord

#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 /…