假设我有一个名为Animal
的模型,其属性为species
。
我打算从Tiger
继承Animal
,属性species
是" tiger",如何定义它以便
Animal.where(:species => 'tiger').where(:age => 12)
可以写成
Tiger.where(:age => 12)
?
我的尝试解决方案:
class Tiger < Animal
def self.inherited(child)
child.instance_eval do
def type
"tiger"
end
end
super
end
end
参考文献: 1. http://eewang.github.io/blog/2013/03/12/how-and-when-to-use-single-table-inheritance-in-rails/ 2. http://www.alexreisner.com/code/single-table-inheritance-in-rails
答案 0 :(得分:0)
虽然我了解您的问题,但您只想实施简单的STI。
我试过了,它对我有用。创建一个基类Animal 动物表属性将是物种,名称和年龄。
2018-03-21 05:29:31,817 2296 DEBUG odoo odoo.api: call crm.lead().load_views(options={u'load_fields': False, u'load_filters': True, u'toolbar': True, u'action_id': 141}, views=[[347, u'kanban'], [350, u'list'], [349, u'form'], [None, u'graph'], [None, u'calendar'], [None, u'pivot'], [352, u'search']]) etc...
继承的类。
class Animal < ApplicationRecord
self.inheritance_column = :species
def self.species
%w(Lion Tiger)
end
end
试着希望它能解决你的问题。