ruby-on-rails - 在Rails/ActiveRecord和旧版架构中避免 “Single Table Inheritance”

标签 ruby-on-rails activerecord

我正在尝试与旧式表集成,该旧式表具有名为“type”的列。

Rails将“聪明地”假设只要表中有“类型”列,它就会尝试使用“单表继承”。

反正有避免这种情况吗?

(我无法重命名该列)。

最佳答案

好吧,大多数类型它确实很聪明-约定优于配置有一些非常实际的好处。 ;-)

在您无法使用约定的情况下,有一种解决方法(可能-至少到目前为止,我一直都找到了...)。对于遗留模式,有两种可能性马上浮现在脑海。

  • 在旧数据库中创建一个单表 View ,该 View 重新映射列,以避免使用AR的常规名称。当然,如果您对数据库没有CREATE VIEW权限,或者您的数据库没有 View ,则不会有太大用处。
  • 使用:type覆盖将set_inheritance_column用作STI指示符,因此

  • class LegacyValue < ActiveRecord::Base
      set_inheritance_column 'does_not_have_one'
    end
    

    关于ruby-on-rails - 在Rails/ActiveRecord和旧版架构中避免 “Single Table Inheritance”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3201257/

    相关文章:

    ruby-on-rails - 使用 redis-rails,如何删除 session 缓存以外的所有内容?

    ruby-on-rails - Rails 2.2.2 将表单输入字段设置为只读

    ruby-on-rails - 尝试对包含在 activerecord 中的结果进行排序

    ruby-on-rails - Rails ActiveRecord Shovel (<<) 运算符

    mysql - 将事件记录列名称覆盖为大写

    javascript - ruby on Rails 中的自定义订购

    ruby-on-rails - gemfile 中包含的 gem 仍然需要类文件中的 "include"?

    ruby-on-rails - 我可以在 Capistrano 任务中与 Rails 模型交互吗?

    mysql - 如何获取与列表内容完全匹配的数据库条目

    ruby-on-rails - Postgresql 的 ActiveRecord 求和错误