在我的模型中,我使用bing翻译器gem通过after_create
回调自动翻译模型属性:
class Place < ActiveRecord::Base
after_create :auto_translate
....
# AUTO_TRANSLATE STUFF
def initialize_bing_translator(bing_id, bing_secret)
t = BingTranslator.new(bing_id, bing_secret)
<do other stuff>
end
def auto_translate
<do stuff>
end
<further auto_translate methods>
一大堆函数似乎让模型代码膨胀了一点,所以我想把它放到一些额外的模块中。 哪里我应该放置.rb文件?这是一个关注的用例(一个我没有完全理解的概念)?在模型文件中定义单独的模块或将其放在/lib/user_modules/
中是否更好?有像经验法则吗?网上提供的信息让我感到困惑,如果有人能为我解释这个问题,我会感到高兴!
答案 0 :(得分:1)
我开始在models
的子文件夹中添加这样的内容并相应地命名空间。在您的具体情况下,我会将其放在类似models/place/translator.rb
(或类似)的内容中,并致电课程Place::Translator
。
如果您只想要一种逻辑分离但不会在其他地方使用相同的功能,则可以使用concerning而不是单独的关注。
答案 1 :(得分:1)
有很多选择,其中大多数主要是基于意见的。这取决于您是否计划重用该类,您的应用程序已经复杂多少以及新类是否具有任何外部依赖性。
我会考虑:创建自己的gem,添加到app/models
,添加一个新的app/translators
目录,可能在lib
...