【问题标题】:Rails 3 - table name being pulled from PARENT model?! (ApplicationModel)Rails 3 - 从父模型中提取表名?! (应用模型)
【发布时间】:2012-06-09 04:12:57
【问题描述】:

我刚刚继承了一个项目。该项目已升级到 Rails3,并且缺少 application_model。我正在尝试实施它。我已经从它扩展了所有其他模型。问题是,由于某种原因,在尝试确定表名时,ActiveRecord 使用的是 ApplicationModel,而不是子模型,所以我得到:

表“your_db.application_models”不存在。

有什么想法吗?为什么要从应用程序模型中提取?关于如何修复的任何想法?

谢谢!

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    显然,这是问题所在(根据我在此页面上找到的内容:rails - root model or application model):

    ActiveRecord normally detects when you subclass an already subclassed ActiveRecord::Base and uses this to turn STI (single table inheritance) on.
    ApplicationModel will be an actual model that is expected to have a table in your database. This can lead to problems down the line.
    

    要解决这两个问题,您必须将 abstract_class 设置为 true,ActiveRecord 才能正常工作。

    类 ApplicationModel

    与抽象的 ActionController 相比,abstract_class 必须设置为 true,这意味着开发人员必须知道他们不能从 ApplicationModel 中删除这一行。使用 ApplicationController,您几乎可以为所欲为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      相关资源
      最近更新 更多