【问题标题】:Activerecord association extensions on belongs_tobelongs_to 上的 Activerecord 关联扩展
【发布时间】:2011-09-01 13:06:24
【问题描述】:

是否可以对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 中失败

【问题讨论】:

  • 你把模块TestExtension放在哪里?在 lib 目录下的新文件中?

标签: activerecord ruby-on-rails-3.1


【解决方案1】:

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

另外,你得到的私有方法错误,即使你没有extend: TestExtension 部分,你也会得到;我相信#test 是所有ActiveRecord 对象的私有方法。

【讨论】:

  • 非常有帮助 - 感谢您对这两点的提醒。我不知道 .test 限制
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-01
相关资源
最近更新 更多