Подтвердить что ты не робот

Отключить столбец "updated_at" в Rails

У меня есть простая модель "Log", которая записывает факт вызова действия контроллера.

Записи этой записи журнала должны создаваться один раз и никогда не изменяться. Кроме того, у меня будет много этих записей в базе данных.

Таким образом, нет необходимости в столбце "updated_at" (не нужно тратить память на жесткий диск).

Как я могу сообщить Rails оставить только столбец "created_at" и не использовать "updated_at"?

Можно ли использовать только модель "Log"?

4b9b3361

Ответ 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