一个Person可以有多个Events ,每个Event可以有一个多态的可Eventablelogging。 如何指定Person和Eventablelogging之间的关系? 这里是我有的模型: class Event < ActiveRecord::Base belongs_to :person belongs_to :eventable, :polymorphic => true end class Meal < ActiveRecord::Base has_one :event, :as => eventable end class Workout < ActiveRecord::Base has_one :event, :as => eventable end 主要问题涉及Person类: class Person < ActiveRecord::Base has_many :events has_many :eventables, :through => :events # is this correct??? end 我是否说has_many :eventables, […]
我有大量的实例,我需要在我的数据库中实现某种多态关联。 我总是浪费大量的时间重新思考所有的选项。 这是我能想到的3个。 我希望有一个SQL Server的最佳做法。 这是多列方法 这是没有外键的方法 这里是基本的方法
伙计们, 要确保我正确理解这一点。 请忽略inheritance的情况(SentientBeing),而不是集中在has_many中的多态模型上:通过关系。 这就是说,考虑以下… class Widget < ActiveRecord::Base has_many :widget_groupings has_many :people, :through => :widget_groupings, :source => :person, :conditions => "widget_groupings.grouper_type = 'Person'" has_many :aliens, :through => :widget_groupings, :source => :alien, :conditions => "video_groupings.grouper_type = 'Alien'" end class Person < ActiveRecord::Base has_many :widget_groupings, :as => grouper has_many :widgets, :through => :widget_groupings end class Alien < […]
我的问题基本上和这个一样: 在同一个模型上有多个关联的多态关联 然而,提议/接受的解决scheme不起作用,如后面的评论者所示。 我有一个在我的应用程序中使用的照片类。 一篇文章可以有一张照片。 但是,我想重新使用多态关系添加辅助照片。 之前: class Photo belongs_to :attachable, :polymorphic => true end class Post has_one :photo, :as => :attachable, :dependent => :destroy end 期望: class Photo belongs_to :attachable, :polymorphic => true end class Post has_one :photo, :as => :attachable, :dependent => :destroy has_one :secondary_photo, :as => :attachable, :dependent => :destroy end 然而,这个失败,因为它找不到“SecondaryPhoto”类。 […]
对于相对简单的数据库要求来说,多态关系(PA)是相当满意的:让不同的表在一个共享表中有子logging。 经典的例子是一张带有评论logging的单表,适用于不同的不一定相亲的实体。 在这个问题上,马克做了很好的工作,展示了三种实现PA的常用方法。 我想要使用基表的方法,这在Bill Karwin的同样出色的答案中有更详细的描述。 一个具体的例子看起来像这样: 实体的主键在基表中引用相同的键值,并且注释表引用基表,因此观察到参照完整性。 这里的关键部分是实体表的主键具有不同的域。 它们是通过在基表中创build新logging并将生成的密钥复制到实体的主键来生成的。 现在我的问题是: 如果我想在现有的数据库中引入PA的参照完整性,那么这些数据库中将有实体产生自己的相互重叠的主键? 到目前为止,我看到两个select: 选项1: 每个实体保留自己的主键,但也得到一个备用的关键。 喜欢: 接近推荐的方法。 基表稳定。 不喜欢: 现有的实体必须修改。 很难find评论的拥有实体。 选项2: 每个实体在基表中都有自己的外键列。 这看起来像Mark的多列方法。 喜欢: 现有实体不受影响。 容易find评论的拥有实体。 不喜欢: 稀疏的列 基表不稳定:引入带有PA的新实体时需要修改 我倾向于选项1,可能与基本表中的字段“EntityName”进行双向查找。 哪个选项会更好。 或者是另一种更好的方法?
我在我的应用程序中有以下“评论”表: comments ——– id INT foreign_id INT model TEXT comment_text TEXT … 这个表的想法是存储我的应用程序的各个部分的评论 – 它可以存储博客评论意见,即: 1|34|blogpost|lorem ipsum… 用户图片: 2|12|picture|lorem ipsum… 等等。 现在,有没有办法强制这些数据的外键约束? 即在评论表中这样的东西: FOREIGN KEY (`foreign_id`) REFERENCES blogposts (`id`) //but only when model='blogpost'
为什么你不能有一个多态关联的外键,比如下面的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
那么这是我的问题,我有三个表; 地区,国家,州。 国家可以在区域内部,国家可以在区域内部。 地区是食物链的顶端。 现在我要添加一个有两列的popular_areas表; region_id和popular_place_id。 是否有可能使popular_place_id成为任何国家或国家的外部关键。 我可能将不得不添加一个popular_place_type列来确定id是否描述一个国家或国家的任何一种方式。