Установка атрибута модели ActiveRecord - PullRequest
0 голосов
/ 27 октября 2011

Я пытаюсь переопределить инициализацию в модели ActiveRecord, я только что увидел одну вещь, которую я не мог понять, что там происходило.Я написал этот метод инициализации:

def initialize params={}
    super params
    @data = Date.strptime(params[:data], '%d/%m/%Y') if not params[:data].nil?
    self.number = generate_contract_number(params[:unit]) if not params[:unit].nil?
    self
end

Учитывая, что generate_contract_number работает и Date.strptime работает такжеУ меня вопрос: почему, когда я делаю self.number = номер установлен, а когда я делаю @ number = номер не устанавливается.Но когда я делаю то же самое с @ contract_date =, это работает, и self.contract_date = устанавливается автоматически?

Спасибо

1 Ответ

2 голосов
/ 27 октября 2011

Не переопределяйте ActiveRecord initialize; используйте after_initialize обратный вызов.

Подробнее см. в этой ТАК .

Я ничего не вижу о @contract_date, поэтому я не уверен, что вы имеете в виду. Без определения модели сложно сказать больше, мы не знаем, что такое @data или @contract_date или что означает «работающий». Имейте в виду, что атрибуты БД ActiveRecord не являются простыми атрибутами @ -тиля.

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