Ruby - инициализация модели - PullRequest
1 голос
/ 06 августа 2010

Я не знаю, как инициализировать информацию в модели перед ее сохранением.

Например.У меня есть модель с именем Car, и она имеет атрибуты wheel_size, color и т. Д. Я хочу инициализировать эти атрибуты в зависимости от других факторов для каждой новой машины.сейчас.

Class Car < ActiveRecord::Base

    before_save :initial_information

    def initial_information
        self.color = value1
        self.wheel_size = value2
    end

end

Ответы [ 3 ]

3 голосов
/ 06 августа 2010

after_initialize

будет лучшим крючком жизненного цикла

1 голос
/ 06 августа 2010

Вы хотите выполнить эту инициализацию как можно раньше; в идеале, сразу после установки информации, от которой вы зависите. Я бы рекомендовал написать собственные методы установки для атрибутов, от которых зависят эти значения, и инициализировать их там.

Итак, что-то вроде:

def value1=(new_value1)
  self["value1"] = new_value1
  self.color = new_value1
end

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

def color
  return self.value1
end
0 голосов
/ 06 августа 2010

, выполнив after_initialize :mymethod, ваш метод mymethod будет вызван после инициализации (которая является конструктором в объектах ruby):]

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