【发布时间】:2015-09-08 16:18:12
【问题描述】:
我有这个代码:
# app/models/ta.rb
module Ta
def self.table_name_prefix
'ta_'
end
end
...
# app/models/ta/article.rb
module Ta
class Article < ActiveRecord::Base
end
end
从 Rails 控制台...
# development environment
Loading development environment (Rails 4.1.6)
2.1.3 :001 > Ta::Article.table_name
=> "ta_articles"
2.1.3 :002 >
...
# production environment
Loading production environment (Rails 4.1.6)
2.1.3 :001 > Ta::Article.table_name
=> "articles"
2.1.3 :002 >
为什么会这样?
【问题讨论】:
-
您是否检查过您的产品环境是否正确地需要该模块?如果没有,请尝试明确要求,看看是否会改变行为。
-
你是对的,谢谢!需要模块手动工作!现在的问题是,为什么 rails 不自动需要模块?
-
我要检查的几件事是 1)您正在执行的任何自动加载,2)查看是否有一个不是 AR 类的模块作为“先锋”命名空间会使 Rails 跳闸,或者(不寒而栗)如果您真的希望它自动工作,请淘汰requiring guide。根据我的经验,如果我真的需要一个特定的布局,我最好手动要求而不是依赖 Rails 自动加载器。
标签: ruby-on-rails ruby-on-rails-4