首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails3-多态模型的共享模型方法

Rails3-多态模型的共享模型方法
EN

Stack Overflow用户
提问于 2012-06-17 15:46:31
回答 1查看 211关注 0票数 0

目前,我在多个模块中重复编写代码,如下所示:

代码语言:javascript
复制
def do_something_polymorphic
  self.something_polymorphic_able.where(.....).each do |thing|
    ...
  end
end

本着DRY的精神,我尝试在/lib/shared_methods.rb中将do_something_polymorphic()移动到一个模块中。当我在我的模型中添加include SharedMethods时,我得到了一个错误:

代码语言:javascript
复制
uninitialized constant Chapter::SharedMethods (NameError)

我不知道该怎么解决这个问题。

然后,我尝试将模块文件加载到模型(load 'shared_methods.rb')中。它加载正常,但是模块构造抛出了名称空间,并且没有为加载/包含它的模型定义do_something_polymorphic()。因此,如果您试图自引用一个对象,则"Module“似乎不是一个选项。

最后,我从shared_methods.rb文件中删除了模块结构,只在文件中保留了do_something_polymorphic()方法。它加载正常,但当我运行该方法时,我得到了错误:

代码语言:javascript
复制
NoMethodError: private method `do_something_polymorphic' called for #<Polymorphic_Object:0x007fc27e5b8338>

不知道下一步该怎么走。我可以将其设置为一个模块,并尝试将"self“作为对象参数传递给该方法,但我希望保留针对其对象干净地调用该方法的能力:current_object.do_something_polymorphic

除了继承路线(我真的很想避免),有没有办法在多个模型之间共享使用self关键字的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-17 22:48:55

您可以通过修改应用程序配置自动包含lib/ modules。

代码语言:javascript
复制
#config/application.rb

config.autoload_paths += %W(#{config.root}/lib)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11069741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档