【问题标题】:It's this a bug in rails? about single table inheritance;这是rails中的错误吗?关于单表继承;
【发布时间】:2010-09-03 07:26:44
【问题描述】:

class Parent < ActiveRecord::Base
end

class Sub < Parent
end

class SubSub < Sub
end

>> SubSub.create :name => 'name1'
>> SubSub.create :name => 'name2'
>> SubSub.create :name => 'name3'

然后


>> SubSub.all.map{|x| x.name}    # => ['name1', 'name2', 'name3']
>> Sub.all.map {|x| x.name}      # => []  # I was expected that it will show all items;
>> Parent.all.map { |x| x.name}  # => ['name1', 'name2', 'name3']

我需要 Sub.all 来显示其所有子类的项目,如何制作?这是bug吗?


我再次测试,当表中没有指定'type'列时它确实有效,但当使用'type'列时失败。


只有一个名为 'parents' 的表带有 'type' 列;


我的环境:rails-3.0.0.beta3,ruby-1.9.2-pre

【问题讨论】:

    标签: ruby-on-rails single-table-inheritance


    【解决方案1】:

    Sub.all 确实显示其所有子类的项目。我建议你检查你的代码。绝对不是错误。

    【讨论】:

    • 谢谢,我再次测试,当表中没有指定'type'列时它确实有效,但当使用'type'列时失败。
    • 你必须有'type'栏。否则 Rails 将无法表现出 STI 行为。
    • 你有没有为 Sub 和 Subsub 创建表,是吗?
    • 不,只有一个名为“父母”的表,类型字段,但我可以为 STI 创建多个表吗?
    • 不,您不应该创建多个表。只有一张桌子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 2021-10-23
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多