ПРЕДУПРЕЖДЕНИЕ ОБ УСТРОЙСТВЕ при сохранении с ruby ​​и active_record - PullRequest
1 голос
/ 09 марта 2012

Я новичок в ruby ​​и пишу небольшой скрипт, который требует записи сообщений в журнал базы данных.

Я использую ruby ​​1.9.3 с active_record, но без направляющих.Все операторы select работают нормально, но моя функция записи в журнал возвращает следующую ошибку:

DEPRECATION WARNING: You're trying to create an attribute `ID'. Writing arbitrary attributes on a model is deprecated. Please just use `attr_writer` etc.

моя модель выглядит так

class ActLog < ActiveRecord::Base
  self.table_name = "ActLog"
  self.primary_key = "ID"
end

и функция журнала:

def log(level, message)
  level.upcase!
  line = ActLog.new
  line.level = level
  line.message = message
  line.module = 'script'
  line.date = Time.new.strftime("%Y-%m-%d %H:%M:%S")
  line.save
end

поле ID является int auto_increment.

Функция журнала будет вызываться много раз во время выполнения.Это лучший способ записи в журнал и почему появляется предупреждение об устаревании?

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Я проверил API и используемые вами методы актуальны.Я думаю, что вам может понадобиться attr_accessor

class ActLog < ActiveRecord::Base
  attr_accessor :id, :level, :message, :module, :date
  self.table_name = "ActLog"
  self.primary_key = "ID"
end

def log(level, message)
  attr = { :level   => level.upcase!,
           :message => message,
           :module  => 'script',
           :date    => Time.new.strftime("%Y-%m-%d %H:%M:%S") }
  ActLog.new(attr).save!
end
0 голосов
/ 09 марта 2012

Я думаю, что ваш класс должен быть следующим:

class ActLog < ActiveRecord::Base
  self.primary_key = 'ID'
  self.table_name = 'ActLog'
end

Из любопытства, почему нестандартные имена?

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