我有一個新的Rails 4應用程序,我在STI配置中創建了幾個模型。單表繼承無法在Rails 4應用程序工作 - ActiveRecord :: SubclassNotFound:單表繼承機制失敗
主要模型被稱爲Order
,它繼承自ActiveRecord::Base
。這是它的樣子:
class Order < ActiveRecord::Base
TYPES = %w(remote local)
scope :remotes, -> { where(type: 'remote') }
scope :locals, -> { where(type: 'local') }
end
其他兩種模式都在models/orders
一個文件夾中,它們被稱爲Remote
和Local
,他們都繼承Order
的命令遷移文件看起來是這樣的:
def change
create_table :orders do |t|
t.string :source_url, null: false
t.string :final_url, null: false
t.string :type
t.string :category
t.timestamps
end
end
我還相信我,包括models/orders
目錄到Rails,這樣做:
config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**}')]
現在,當我用空數據庫登錄控制檯並運行Order.all
時,一切都很好,我得到一個空的關係對象。但我創建第一個Remote
對象,並嘗試運行Order.all
我再次碰到下面的錯誤後:
>> Order.all
Order Load (1.0ms) SELECT "orders".* FROM "orders"
ActiveRecord::SubclassNotFound: The single-table inheritance mechanism failed to locate
the subclass: 'Remote'. This error is raised because the column 'type' is reserved
for storing the class in case of inheritance. Please rename this column if you didn't
intend it to be used for storing the inheritance class or overwrite
Order.inheritance_column to use another column for that information.
這到底是怎麼回事?我做錯了什麼?
在此先感謝。
您是如何看待「遠程」類的? – spickermann
類遠程<訂單 before_save:set_type 私人 高清set_type self.type =「遠程」 結束 結束 – rodrigoalves
你爲什麼花這麼大的力氣來操縱自己的類型列? Rails將完全爲你處理... –