gpt4 book ai didi

ruby-on-rails - 单表继承中的 counter_cache

转载 作者:行者123 更新时间:2023-12-03 17:49:15 24 4
gpt4 key购买 nike

我想知道 counter_cache 是否可以在单表继承中工作。

对于这些型号:

class User
has_many :questions
end

class Question
belongs_to :user, :counter_cache => true
end

class SimpleQuestion < Question
end
class ComplexQuestion < Question
end

那么以下计数器会起作用吗?
create_table(:users) do |t|
t.integer :questions_count
t.integer :simple_questions_count
t.integer :complex_questions_count
end
  • 全部工作
  • 他们都没有工作
  • 只有 questions_count工作
  • 只有 simple_questions_countcomplex_questions_count

  • 哪一个?我猜是第 3 个,但我还想要 4 个。如果不是 4,我如何让 4 工作?

    === 更新 ===

    下面是一个例子:
    id, user_id, question_content, type
    1, 3, something, SimpleQuestion
    2, 3, something, SimpleQuestion
    3, 3, something, ComplexQuestion

    所以现在我想要:
    user.questions_count # => 3
    user.simple_questions_count # => 2
    user.complex_questions_count # => 1

    我的问题是, :counter_cache => true 的基本行为是什么?是否可以应用于单表继承?

    最佳答案

    刚刚面临同样的情况,它如你所料对我有用(数字 4):

    看,像这样修改你的代码,这样子类就会覆盖父类的行为:

    class User
    has_many :questions
    end

    class Question
    belongs_to :user
    end

    class SimpleQuestion < Question
    belongs_to :user, :counter_cache => true
    end
    class ComplexQuestion < Question
    belongs_to :user, :counter_cache => true
    end

    并添加 complex_questions_countsimple_questions_count列到您的 User
    就是这样!每当您创建一个问题时,它都会增加适当的计数器。在 Rails 3.2 上测试过!

    关于ruby-on-rails - 单表继承中的 counter_cache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3980290/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com