Как получить атрибуты активной записи rails, соответствующие значениям SQL

#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, которое мне нужно 🙂