【问题标题】:Rails module self.table_name_prefix is not working on production environment [duplicate]Rails模块self.table_name_prefix在生产环境中不起作用[重复]
【发布时间】: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


【解决方案1】:

添加到config/initializers/namespace.rb 类似:

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

应该可以解决你的问题。

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 2018-09-19
    • 2019-01-04
    • 1970-01-01
    相关资源
    最近更新 更多