Rails模块self.table_name_prefix在生产环境中无法正常工作

3

我有这段代码:

# 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 >

为什么会发生这种情况?

1
你是否检查过生产环境是否正确地要求了该模块?如果没有,请尝试显式地要求并查看是否更改了行为。 - Max Alcala
你说得对,谢谢!手动引入模块可以解决问题!现在的问题是,为什么Rails不能自动引入模块呢? - el_quick
1
我会检查的几件事情是:1)你是否执行了任何自动加载,2)看看是否将不是AR类的模块作为“spearhead”命名空间会使Rails出现问题,或者(颤抖)如果你真的想让它自动工作,可以使用requiring guide。根据我的经验,如果我真的需要一个特定的布局,我最好手动要求而不是依赖于Rails自动加载程序。 - Max Alcala
1个回答

3

添加如下代码到config/initializers/namespace.rb文件中:

require Rails.root.join('app', 'models', 'ta')

应该可以解决您的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接