Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 覆盖模型属性_Ruby On Rails 3_Attributes - Fatal编程技术网

Ruby on rails 3 覆盖模型属性

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方法来实现

事情是这样的。我有一个国家模型,有两列“语言”和“默认语言”。例如,对于瑞士,这些列分别设置为“de,fr,it”和“de”

现在,如果我使用Country.languages,我会得到“de,fr,it”字符串。当我得到Country.languages时,我如何覆盖它,从而得到一个数组[“de”、“fr”、“it”]


当然,我可以创建一个函数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
,请参阅

有关更通用的对象(不仅仅是数组,还可以使用
序列化
),请参阅