Как установить атрибуты в обратном вызове ActiveRecord? - PullRequest
0 голосов
/ 04 сентября 2010

это кажется очень простым вопросом ... но вот:)

Geek name:string
Laser geek_id:integer, power:integer

Geek
 has_one :Laser
end

Laser
 belongs_to :Geek
end

достаточно просто, верно?

Теперь я хочу создать лазер после того, как выродок создан, поэтому новая модель выродка выглядит следующим образом

Geek 
 has_one :laser
 after_create :create_laser
end

Это работает очень хорошо, но мне также нравится передавать значение по умолчанию для атрибута мощности лазера, так как мне это сделать?

after_create: create_laser (: power => 5000)

не работает :( но выглядит красиво :)

У кого-нибудь есть хорошее и элегантное решение для этого?

1 Ответ

1 голос
/ 04 сентября 2010

Конечно.

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

before_create :setup_laser

Мы определили бы это в Geek модели так:

private

def setup_laser
  create_laser(:power => 5000)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...