2

我正在修改现有 Rails 应用程序的一部分以使用 Class-Table-Inheritance gem (https://github.com/brunofrank/class-table-inheritance)。一切都很好,除了我在我的超类中定义了一些实例方法——Person,所有子类都需要能够访问这些方法。例如,full_name,它返回连接的名字和姓氏,或者cite_name,它返回第一个名字和姓氏。由于 CTI gem 实际上并没有使用 Ruby 继承(所有子类仍然从 ActiveRecord::Base 继承,并且 gem 做了一些时髦的巫术来将 ActiveRecord 字段链接在一起),我无法在我拥有的子类中访问这些方法创建的。关于解决这个问题的任何想法?我对 STI 不感兴趣,但我愿意分叉和破解这个特定的 CTI gem,或者查看其他解决方案。

4

3 回答 3

1

试试http://peterhamilton.github.com/citier,它是基于 CITIEsForRAILS 的,我对它进行了分叉,并对其进行了快速开发和各种其他更改。它修复了大部分(如果不是全部)它所拥有的错误并且工作如此简单。

于 2011-04-29T14:11:34.310 回答
0

就在我的脑海中,您是否看到在您的子类的迁移表中,您需要有以下行:

create_table :videos, :inherits => :product do |t|

以及在您的 Model.rb 文件中

  class Product < ActiveRecord::Base
    acts_as_superclass # I'm guessing you might be missing this line??
  end

  class Book < ActiveRecord::Base
    inherits_from :product
  end
于 2011-02-07T12:10:45.767 回答
0

我认为全新的 CITIEsForRAILS gem(Class Inheritance & Table Inheritance EmbeddingS For RAILS,请参阅https://github.com/altrabio/CITIEsForRAILS)完全符合您的要求。这个 gem 扩展了 CTI、STI 和多表继承,同时保留了 Ruby 类继承。

于 2011-02-16T15:59:33.980 回答