belongs_to上的Activerecord关联扩展

时间:2011-09-01 13:06:25

标签: activerecord ruby-on-rails-3.1

是否可以对belongs_to关系进行关联扩展?

我曾尝试使用模块执行此操作,但一直被告知我正在调用的方法是私有的:

module TestExtension
  def test
    puts 'test successful'
  end
end

class Question < ActiveRecord::Base
  belongs_to :user, extend: TestExtension
end

每次我运行它虽然抱怨该方法是私有的

q = Question.first
q.test
# => NoMethodError: Attempt to call private method `test'

我不是100%清楚是否可以在belongs_to上进行AR扩展。它在Rails 3.0.7上运行良好,但现在在3.1.0中失败了

1 个答案:

答案 0 :(得分:0)

这是3.1.0中尚未解决的known issue。基本上,3.1.0中的新关联设计不支持扩展belongs_to关联,因为它从一开始就不是支持的功能。但是,这个问题仍然存在,因此将来可能会得到解决;如果你愿意的话,你应该对语音支持的问题发表评论。

此外,即使您没有extend: TestExtension部分,您将获得私有方法错误;我相信#test是所有ActiveRecord个对象的私有方法。