将Rails委派的方法放在columns_hash中

时间:2013-06-24 22:47:19

标签: ruby-on-rails ruby delegates

我在Rails应用程序FooBar中有两个Ruby类。 Foo有很多Bar个。 Foo有以下代表团:

delegate :bar_method, to: :bar

有没有办法让bar_method显示在Foo的{​​{1}}中?

1 个答案:

答案 0 :(得分:0)

首先,如果你有一个类Foo并且它has_many :bars那么Foo的一个实例没有一个Bar,它有一个Bars集合。所以你的delegate :bar_method, to: :bar将无效,因为没有吧。

话虽如此,如果改为Foo has_one :bar然后你delegate :bar_method, to: :bar,那么你可以调整columns_hash方法。

Rails只是Ruby,所以你可以使用Ruby

def self.columns_hash
  super.merge('bar_method' => Bar.columns_hash['bar_method'])
end