我试图改变用户类型设置为“无”,并不断得到现在这个错误消息: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