gpt4 book ai didi

ruby-on-rails - 与 Rails 中的抽象类的多态关联

转载 作者:太空宇宙 更新时间:2023-11-03 16:13:17 25 4
gpt4 key购买 nike

所以这或多或少是我正在尝试的:

我为所有常用功能提取了一个抽象类,其中包括一个多态关联,所以它看起来像这样:

class Card < ActiveRecord::Base
self.abstract_class = true
belongs_to :cardable, polymorphic: true
...
end

class Spell < Card
...
end

class Unit < Card
...
end

现在,当我尝试对此使用多态关联时,大致如下:

  class Deck < ActiveRecord::Base
has_many :cards, :as => :cardable
end

class Hand < ActiveRecord::Base
has_many :cards, :as => :cardable
end

belongs_to 部分工作正常,即 spell.cardable 按预期完美运行

但是,由于抽象类的原因,has_many 并不能很好地工作即 hand.cardsdeck.cards 总是给出一个空的 ActiveRecord Association

这是一个可行的模型吗?如果不是,那么对整个场景建模的更好方法是什么?

最佳答案

可以通过构造器来模拟一个抽象类

class Card < ActiveRecord::Base
def initialize
raise "Card cannot be instantiated directly" if self.class == Card
end
belongs_to :cardable, polymorphic: true
...
end

你维护你的 STI 并拥有伪抽象类请阅读此 comment在计算器上:

关于ruby-on-rails - 与 Rails 中的抽象类的多态关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55081750/

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