Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 棘手的Rails 4 ActiveRecord继承_Ruby On Rails_Ruby_Inheritance_Activerecord_Single Table Inheritance - Fatal编程技术网

Ruby on rails 棘手的Rails 4 ActiveRecord继承

Ruby on rails 棘手的Rails 4 ActiveRecord继承,ruby-on-rails,ruby,inheritance,activerecord,single-table-inheritance,Ruby On Rails,Ruby,Inheritance,Activerecord,Single Table Inheritance,我创建了几个模型,如下所示。 基本模型是TransactionType和TransactionItem ExpenseType和IncomeType派生自TransactionType。 费用和收入来自TransactionItem class TransactionType < ActiveRecord::Base scope :expense_types, -> { where(tran_type: 'ExpenseType') } scope :income_type

我创建了几个模型,如下所示。 基本模型是TransactionType和TransactionItem ExpenseType和IncomeType派生自TransactionType。 费用和收入来自TransactionItem

class TransactionType < ActiveRecord::Base
  scope :expense_types,  -> { where(tran_type: 'ExpenseType') }
  scope :income_types,   -> { where(tran_type: 'IncomeType') }
  self.inheritance_column = "tran_type"
  validates :name, uniqueness: true
end

class ExpenseType < TransactionType
end

class IncomeType < TransactionType
end

class TransactionItem < ActiveRecord::Base
validates :note, length: { in: 2..255 }
end

class Expense < TransactionItem
belongs_to :expense_type
validates :expense_type, presence: true
end

class Income < TransactionItem
belongs_to :income_type
validates :income_type, presence: true
end
如果有人能分享你解决这个问题的想法,那就太好了

谢谢,
Masc

如果费用属于ExpenseType,则费用表需要一个整数属性Expense\u type\u id

您可以将其添加到

 rails g migration AddExpenseTypeToExpense expense_type_id:integer
然后
rakedb:migrate


这同样适用于收入和收入类型

费用
表上是否有
费用类型id
列?这对于单表继承是否正确?
 rails g migration AddExpenseTypeToExpense expense_type_id:integer