Отключить столбец «updated_at» в Rails - PullRequest
23 голосов
/ 27 июля 2010

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

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

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

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

Есть ли способ сделать модель "Журнал" доступной только для чтения?

Ответы [ 2 ]

34 голосов
/ 27 июля 2010

Я предполагаю, что у вас есть столбец 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
18 голосов
/ 27 июля 2010

Вы можете сделать модель доступной только для чтения, добавив к ней метод 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 не будет обновлять то, чего там нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...