#mysql #ruby-on-rails #activerecord
#mysql #ruby-on-rails #activerecord
Вопрос:
Если у меня есть какой-то объект activerecord, есть ли способ получить соответствующие значения SQL, которые будут вставлены в базу данных перед сохранением записи? То есть, например, если есть столбец типа datetime, то он будет преобразован в некоторый строковый формат, также будет сериализован атрибут json, так есть ли способ узнать эти значения заранее?
Комментарии:
1. Да, но вам придется покопаться в Arel и в том, как rails выполняет запросы, поскольку ActiveRecord на самом деле не имеет этой функции. viget.com/articles/composable-sql-queries-in-rails-using-arel
2. Спасибо за совет, пожалуйста, проверьте мой ответ на мой вопрос 🙂
Ответ №1:
Я думаю, что нашел это 🙂
Сначала получите значение для базы данных, затем укажите его.
Предположим, у нас есть модель книги: Book(title,published_at, …)
book = Book.new(title: "Some title", published_at: Time.now)
value_for_database = book.instance_eval("@attributes")["published_at"].value_for_database
quoted_value = Book.connection.quote(value_for_database)
quoted_value
теперь содержит значение sql, которое мне нужно 🙂