Отключить столбец "updated_at" в Rails
У меня есть простая модель "Log", которая записывает факт вызова действия контроллера.
Записи этой записи журнала должны создаваться один раз и никогда не изменяться. Кроме того, у меня будет много этих записей в базе данных.
Таким образом, нет необходимости в столбце "updated_at" (не нужно тратить память на жесткий диск).
Как я могу сообщить Rails оставить только столбец "created_at" и не использовать "updated_at"?
Можно ли использовать только модель "Log"?
Ответы
Ответ 1
Вы можете сделать модель только для чтения, добавив метод readonly?
к модели.
class Log < ActiveRecord::Base
# Prevent modification of existing records
def readonly?
!new_record?
end
# Prevent objects from being destroyed
def before_destroy
raise ActiveRecord::ReadOnlyRecord
end
end
Пример выше был принят из здесь.
Если вам не нужен столбец updated_at
, просто удалите (или не добавьте его) из своей базы данных. Rails не будет обновлять то, что не существует.
Ответ 2
Я предполагаю, что у вас есть столбец updated_at
, потому что вы использовали сокращенную строку t.timestamps
в файле миграции модели. Если вам не нужен столбец, вы можете явно указать, что вы хотите:
class Log < ActiveRecord::Migration
def self.up
create_table :logs do |t|
t.column :foo, :string
t.column :created_at, :datetime
end
end
def self.down
drop_table :logs
end
end