gpt4 book ai didi

ruby-on-rails - Rails 逆多态关联

转载 作者:行者123 更新时间:2023-12-04 03:45:33 26 4
gpt4 key购买 nike

我熟悉使用 rails 的多态关联,其中可以将模型声明为多态以获得属于众多其他模型的能力,例如:

class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
end

class Article < ActiveRecord::Base
has_many :comments, :as => :commentable
end

class Photo < ActiveRecord::Base
has_many :comments, :as => :commentable
end

class Event < ActiveRecord::Base
has_many :comments, :as => :commentable
end

是否有一种通用模式来处理相反的情况,其中一个模型可以有许多其他模型,这些模型将通过相同的界面访问(例如,一个人有很多宠物,宠物可以是狗、猫等)? ?我应该只创建一个虚拟属性吗?

最佳答案

以您的宠物为例,STI可能是一个解决方案:

class Person < ActiveRecord::Base
has_many :pets
end

class Pet < ActiveRecord::Base
belongs_to :owner, class_name: "Person", foreign_key: "person_id"
# Be sure to include a :type attribute for STI to work
end

class Dog < Pet
end

class Cat < Pet
end

这应该仍然可以让您访问 @person.pets@dog.owner , @pet.owner , 等等。

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

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