我有一个模型类Person,我使用:
创建它们的实例person = Person.create!
现在我想说这个人出生在美国加利福尼亚州,但是这种特殊的方式:
person = Person.create!({:name => "Matt", :born => "USCA"})
这意味着有两个字符用于标识国家/地区,另外两个字符用于标识状态。 但我不想将字符串存储在数据库中,我希望以结构化的方式存储,如:
|名称|国家|国家|
|马特|美国|加利福尼亚州|
我在哪里可以解析字符串以根据它来分配国家和州?模型中的哪种方法?
提前致谢
答案 0 :(得分: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 :(得分:1)
您可以使用before_save
回调 - 类似这样的内容:
attr_accessible :born
before_save :parse_location
def parse_location
# parsing here…
end
答案 2 :(得分:1)
查看ActiveRecord Callbacks模块