我試圖改變用戶類型設置爲「無」,並不斷得到現在這個錯誤消息:Rails的單表繼承的ActiveRecord :: SubclassNotFound
的單表繼承機制未能找到該子類:「零」 。出現此錯誤的原因是「類型」列在保留繼承的情況下保留用於存儲類。如果您不打算將其用於存儲繼承類或覆蓋User.inheritance_column以使用其他列來處理該信息,請重命名此列。
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/inheritance.rb:161:in `rescue in find_sti_class'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/inheritance.rb:155:in `find_sti_class'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/inheritance.rb:144:in `discriminate_class_for_record'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/persistence.rb:50:in `instantiate'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/querying.rb:48:in `block in find_by_sql'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/result.rb:55:in `block in each'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/result.rb:55:in `each'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/result.rb:55:in `each'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/querying.rb:48:in `map'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/querying.rb:48:in `find_by_sql'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/relation.rb:603:in `exec_queries'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/relation.rb:487:in `load'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/relation.rb:231:in `to_a'
from /usr/local/rvm/gems/[email protected]/gems/bullet-4.13.1/lib/bullet/active_record41.rb:10:in `to_a'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/relation/finder_methods.rb:479:in `find_last'
from /usr/local/rvm/gems/[email protected]/gems/activerecord-4.1.1/lib/active_record/relation/finder_methods.rb:165:in `last'
我明白爲什麼它的發生,我確實希望出現的單表繼承,但它甚至不會讓我重寫它的Rails控制檯。我正在嘗試將用戶類型改回我需要的類型,並立即向我提供該信息。即使我做User.find(myID)它不會拉我的數據。
任何方式,我可以告訴它重寫它,並改變類型?
編輯:
我想:
User.last (I was the last user)
User.find(*myId*)
它甚至不會讓我做User.last.destroy
或User.destroy_all
,給了我同樣的錯誤在控制檯每次上面。
我也試過創建一個名爲「nil」的模型,它從用戶繼承而來,並且什麼也沒有。
你寫'「無」'或' nil'?後者應該轉化爲SQL的NULL。提供您嘗試過的代碼示例和確切的輸出。 – 2015-02-06 16:22:12
@ D方我實際上寫了「無」,所以它可能正在尋找一個實際類型的「無」 - 我試圖創建一個新的模型,實際上稱爲「無」,從用戶繼承,它仍然不會讓我做出改變,我假設因爲它現在是小寫字母。 – asalgan 2015-02-06 16:23:49
這很可能是真的。儘管如此,您在控制檯中運行的代碼片段(和輸出)仍將有所幫助。將它們添加到問題中。順便說一下,代碼是通過用4個空格縮進來在問題中指定的。 – 2015-02-06 16:25:28