Ruby on rails 3 覆盖模型属性
事情是这样的。我有一个国家模型,有两列“语言”和“默认语言”。例如,对于瑞士,这些列分别设置为“de,fr,it”和“de” 现在,如果我使用Country.languages,我会得到“de,fr,it”字符串。当我得到Country.languages时,我如何覆盖它,从而得到一个数组[“de”、“fr”、“it”]Ruby on rails 3 覆盖模型属性,ruby-on-rails-3,attributes,Ruby On Rails 3,Attributes,事情是这样的。我有一个国家模型,有两列“语言”和“默认语言”。例如,对于瑞士,这些列分别设置为“de,fr,it”和“de” 现在,如果我使用Country.languages,我会得到“de,fr,it”字符串。当我得到Country.languages时,我如何覆盖它,从而得到一个数组[“de”、“fr”、“it”] 当然,我可以创建一个函数def来定义可用的语言,但我仍然不希望语言是公共的。对于这种情况下的简单数组,最好编写自己的解决方案 这可以通过重写getter/setter方法来实现
当然,我可以创建一个函数def来定义可用的语言,但我仍然不希望语言是公共的。对于这种情况下的简单数组,最好编写自己的解决方案 这可以通过重写getter/setter方法来实现: 在您的模型中:
class Country < ActiveRecord::Base
def languages
read_attribute(:languages).split(',')
end
def languages=(array)
write_attribute(:languages,array.join(','))
end
end
class Country
对于散列,可以使用ActiveRecord::Store
,请参阅
对于更一般的对象(不仅仅是数组,您可以使用
序列化),请参见。对于简单数组,在这种情况下,最好编写自己的解决方案
这可以通过重写getter/setter方法来实现:
在您的模型中:
class Country < ActiveRecord::Base
def languages
read_attribute(:languages).split(',')
end
def languages=(array)
write_attribute(:languages,array.join(','))
end
end
class Country
对于散列,可以使用ActiveRecord::Store
,请参阅
有关更通用的对象(不仅仅是数组,还可以使用序列化
),请参阅