Добавление крючка для создания модели в рельсах - PullRequest
0 голосов
/ 19 января 2011

У меня есть класс модели Person, и я создаю его экземпляры, используя:

person = Person.create!

Теперь я хочу сказать, что этот человек родился в Калифорнии, США, но таким своеобразным образом:*

person = Person.create!({:name => "Matt", :born => "USCA"})

Это означает, что есть два символа для обозначения страны и еще два символа для обозначения государства.Но я не хочу хранить строку в базе данных, я хочу хранить ее структурированным образом, например:

|Имя |Страна |Штат |
|Мэтт |США |Калифорния |

Где можно разобрать строку, чтобы назначить страну и штат на ее основе?Какой метод в модели?

Заранее спасибо

Ответы [ 3 ]

4 голосов
/ 19 января 2011

Что-то вроде:

before_save :parse_country_code

def parse_country_code
  if born_changed?
    self.state = ...
    self.country = ...
  end
  true # avoid cancelling the callback chain
end

Вы также можете найти ActiveRecord :: Aggregations :: ClassMethods полезным.С этим вы можете объединить свой анализ и другую логику с другим классом.

1 голос
/ 19 января 2011

Проверьте ActiveRecord Обратные вызовы модуль

1 голос
/ 19 января 2011

Вы можете использовать before_save обратный вызов - что-то вроде этого:

attr_accessible :born

before_save :parse_location

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