模型属性代理

时间:2016-03-15 15:22:47

标签: ruby-on-rails ruby

假设我们有一个foos表,其中包含bar列。现在我们将列重命名为bar_primary并添加另一个 - bar_secondary。我们希望将bar的读/写行为分配给两个属性中的一些。

我希望有类似的东西:

class Foo < ActiveRecord::Base
  def bar
    read_condition ? bar_primary : bar_secondary
  end

  def bar=(value)
    if write_condition
      self.bar_primary = value
    else
      self.bar_secondary = value
    end
  end
end

可以做到这一点,不过类似:

foo['bar'] = 'baz'

会打破它。现在我可以实现[]=,但这已经开始闻起来了。

在这种情况下,我是否有一些不知道可能有用的铁轨?

1 个答案:

答案 0 :(得分:0)

别名倾向于涵盖这种要求,但我不确定条件别名。

查看alias_attribute