在rails上的ruby中的类继承 - monkeypatching / overriding belongs_to

时间:2011-01-14 19:27:01

标签: ruby-on-rails ruby inheritance

简单的Rails问题。我有一个模型Foo,看起来像这样:

class Foo < ActiveRecord::Base

  belongs_to :bar

  def self.belongs_to(association_id, options = {})
    puts "HI"
    super
  end
end

为什么我在irb中加载Foo

>> Foo
=> Foo(id: integer, bar_id: integer)
>>

我没有看到“HI”(我很确定Rails在加载类时调用belongs_to)?然而,当我输入Foo.belongs_to(“anything_here”)时,我看到:

>> Foo.belongs_to("anything_here")
HI
=> nil
>>

1 个答案:

答案 0 :(得分:1)

不完全确定你想要完成什么(看起来有点讨厌!)。

无论哪种方式,定义和呼叫的顺序都很重要:

class Foo < ActiveRecord::Base
  def self.belongs_to(association_id, options = {})
    puts "HI"
    super
  end

  belongs_to :bar
end