Ruby on rails ActiveRecord:模型的不同表示形式
我有一个名为Book的模型,它表示一本包含所有可用数据的书。现在,我需要将书籍实例专门化为几个案例(仅示例):Ruby on rails ActiveRecord:模型的不同表示形式,ruby-on-rails,inheritance,activerecord,mixins,Ruby On Rails,Inheritance,Activerecord,Mixins,我有一个名为Book的模型,它表示一本包含所有可用数据的书。现在,我需要将书籍实例专门化为几个案例(仅示例): AmazonBook的id来自asin(亚马逊标准标识号)或isbn(取决于哪种可用,首选asin)。它还有一个特定的csv版本的图书记录。“特殊属性”asin包含在基本图书记录中 其他市场上的书籍需要其他(虚拟?)属性,例如,到Booklooker市场的csv导出具有不同的结构,或者Booklooker市场具有自己的“特殊属性”。这些特殊属性都存储在基本图书记录中 专用实例始终引
- AmazonBook的id来自asin(亚马逊标准标识号)或isbn(取决于哪种可用,首选asin)。它还有一个特定的csv版本的图书记录。“特殊属性”asin包含在基本图书记录中
- 其他市场上的书籍需要其他(虚拟?)属性,例如,到Booklooker市场的csv导出具有不同的结构,或者Booklooker市场具有自己的“特殊属性”。这些特殊属性都存储在基本图书记录中
谢谢你的帮助 创建多个与Book有一个关系的模型
Amazon_Book
belongs_to :book
Booklover_Book
belongs_to :book
Book
has_one :amazon_book
has_one :booklover_book
然后您所需的访问器将工作
book = Book.find(...)
book.amazon_book.asin
book.booklover_book.whatever
您可以添加、修改和删除特定于市场的模型,而不会影响整个图书模型或相互影响。这可能是使用单表继承的罕见情况之一。这不是问题所在。一本书同时是一本亚马逊书和一本书。对于STI,每个子类型都有自己的图书记录。在您的示例中,对于子类型:狮子也必须是猫鼬,根据当前的用例,它必须能够同时具有这两种行为。啊,好吧,这样才不会出现问题。