gpt4 book ai didi

ruby-on-rails - 如何通过多态类型获取对象的所有实例?

转载 作者:行者123 更新时间:2023-12-02 01:18:38 26 4
gpt4 key购买 nike

我设置了以下模型:

class Sound < ActiveRecord::Base  
has_many :tenders, :as => :tenderable
belongs_to :event
end

class Stage < ActiveRecord::Base
has_many :tenders, :as => :tenderable
belongs_to :event
end

class Tender < ActiveRecord::Base
attr_accessible :event_id, :user_id, :estimate, :tenderable_id, :tenderable_type
belongs_to :tenderable, :polymorphic => :true
end

class Event < ActiveRecord::Base
attr_accessible :name
has_one :stage
has_one :sound

accepts_nested_attributes_for :stage, :allow_destroy => true
accepts_nested_attributes_for :sound, :allow_destroy => true
end

每个事件都有各种 Tenderable 附加到它(例如舞台、声音),我可以通过 Event.find(id).tenderables 访问这些,但我需要弄清楚哪些“机会”可用,而不管事件如何他们依附于。

目前我没有“机会”模型,因为我试图让事情变得简单。

我真正想要做的是像 Tenderables.all 这样的东西,它将返回所有“声音”、“阶段”和我定义为“可招标”的任何其他内容。

实现此目标的最佳方法是什么?

谢谢;)

最佳答案

Tender.select("DISTINCT tendable_type").collect(&:tendable_type).compact

将为您提供所有已至少使用过一次的关联模型的名称。

对于所有已关联为可照料的对象

Tender.where("tendable_type IS NOT NULL").collect(&:tendable)

关于ruby-on-rails - 如何通过多态类型获取对象的所有实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7973493/

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