2011-01-19 2 views
0

У меня есть модель класса Person, и я создаю их экземпляры с помощью:Добавление крючком модели создания в рельсах

person = Person.create! 

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

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

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

| Имя | Страна | Государство |
| Мэтт | США | Калифорния |

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

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

ответ

4

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

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

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

attr_accessible :born 

before_save :parse_location 

def parse_location 
    # parsing here… 
end