我的 Rails 应用程序中有一个多对一多态 Rails 关联,用于“案例”模型。有很多东西都有案例,所以我通过执行“thing_that_has_a_case.case”来访问每个事物的案例。
但是,我正在尝试另一种方式,但我不确定如何。我可以访问 case 对象,但我想访问正在装箱的东西。rails有办法做到这一点吗?我可以用一个丑陋的开关来做到这一点,它为每种类型的对象执行不同的 sql 查找,但我希望 rails 有更好的方法。谢谢!
我的 Rails 应用程序中有一个多对一多态 Rails 关联,用于“案例”模型。有很多东西都有案例,所以我通过执行“thing_that_has_a_case.case”来访问每个事物的案例。
但是,我正在尝试另一种方式,但我不确定如何。我可以访问 case 对象,但我想访问正在装箱的东西。rails有办法做到这一点吗?我可以用一个丑陋的开关来做到这一点,它为每种类型的对象执行不同的 sql 查找,但我希望 rails 有更好的方法。谢谢!
你可以在你的案例模型中添加这样的东西:
belongs_to :parent, :polymorphic => true
..假设您有字段parent_id
并且parent_type
在您的案例模型中(将第一个参数更改为belongs_to
取决于您如何命名这些关联字段)。一旦你有了这个,你应该能够参考给case.parent
定的案例实例。
而且,为了澄清,这种关系的一方面是这样的:
has_many :cases, :as => :parent, :dependent => :destroy
(我假设您已经根据您的描述进行了该工作)