标签: polymorphic-associations

数据库最佳实践

我有一个存储注释的表,注释可以来自另一个用户,或者是另一个在此应用中是独立实体的配置文件.

我原来的想法是该表将同时具有user_id和profile_id字段,因此如果用户提交注释,则会给user_id留下profile_id为空

这是对的,错的,还有更好的方法吗?

database polymorphic-associations

7
推荐指数
2
解决办法
1447
查看次数

与Doctrine 2中不同所有者对象的多态关联

是否可以在Doctrine 2 中对不同的所有者对象使用多态关联?我的意思是,例如ImageGroup实体由不同的实体拥有:Article,Album,Post,Comment等.因此ImageGroup表中应该有"ownerId"和"ownerType"属性,其中"ownerType"是鉴别符.

我已经在我的项目中使用类表继承以及其他对象关系上的超类映射,但是如果我是正确的话,它们中的任何一个都适合这个问题.因为在这些情况下引用的对象是继承的.

我已经在这里阅读了多态关联的答案,但我没有找到我的例子的答案.

在我的例子中根本没有继承.有什么帮助吗?提前致谢!

polymorphic-associations doctrine-orm

7
推荐指数
1
解决办法
1031
查看次数

Rails 4:结合has_many:通过与多态关联相关联

在我的Rails 4应用程序中,我有以下模型:

User
has_many :administrations
has_many :calendars, through: :administrations
has_many :comments
has_many :calendar_comments, through: :calendars, :source => :comments

Calendar
has_many :administrations
has_many :users, through: :administrations
has_many :posts
has_many :comments, through: posts
has_many :ads

Administration
belongs_to :user
belongs_to :calendar

Post
belongs_to :calendar
has_many :comments, as: :commentable

Ad
belongs_to :calendar
has_many :comments, as: :commentable

Comment
belongs_to :commentable, polymorphic: true
belongs_to :user
Run Code Online (Sandbox Code Playgroud)

我需要访问comments的是belong_to一个adcalendarad belongs_to.

这就是我在Calendars#Index行动中要做的事情:

@posts_comments = @user.calendar_comments.where(commentable_type: "Post").order("created_at DESC").limit(5)
@ads_comments …
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails has-many-through polymorphic-associations ruby-on-rails-4

7
推荐指数
1
解决办法
1747
查看次数

渴望在ActiveRecord中加载多态关联

这是我第一次使用Rails,我想知道是否可以在一个SQL查询中加载一个多态关联?它们之间的模型和关联足够基本:资产模型/表可以通过多态关联引用内容(图像,文本或音频),即

class Asset < ActiveRecord::Base
  :belongs_to :content, :polymorphic => true
end

图像,文本,音频定义如下:

class Image < ActiveRecord::Base
  :has_one :asset, :as => :content
end

当我尝试加载图片时,请这样说:

Image.first(
      :conditions => {:id => id},
      :include => :asset
)

它指定了两个查询,一个用于检索Image,另一个用于检索资产(FYI,如果我指定a,也会发生这种情况:joins).根据我的理解,ActiveRecord这样做是因为它不知道Image和Asset之间存在一对一的关联.有没有办法强制连接并一次检索2个对象?我也尝试使用自定义选择连接,但我最终必须手动创建ActiveRecord模型及其关联.

ActiveRecord是否提供了这样做的方法?

activerecord ruby-on-rails polymorphic-associations

6
推荐指数
1
解决办法
5011
查看次数

Rails模型有两个多态的has_many到:对象标记的关联

我的架构中有ArticlesJournals可与被标记Tags.这需要has_many through:与我的Tagging连接表的多态关系关联.

好的,这是一个简单且记录良好的部分.

我的问题是Articles可以同时拥有主标签和子标签.主要标签是我最感兴趣的,但我的模型也需要跟踪这些子标签.子标签只是描述Article不太重要的标签,但来自同一个全局池Tags.(事实上​​,一个Article人的主要标签可能是另一个人的子标签).

实现这一点需要Article模型与模型有两个关联,Tagging并且两个has_many through:关联Tags(即#tags&#sub-tags)

这是我到目前为止所做的,虽然有效但不保持主标签和子标签分开.

class Article < ActiveRecord::Base
  has_many :taggings, as: :taggable
  has_many :tags, through: :taggings

  has_many :sub_taggings, as: :taggable, class_name: 'Tagging',
           source_type: 'article_sub'
  has_many :sub_tags, through: :sub_taggings, class_name: 'Tag', source: :tag
end

class Tagging < ActiveRecord::Base
  #  id            :integer
  #  taggable_id   :integer
  #  taggable_type :string(255)
  #  tag_id        :integer
  belongs_to :tag …
Run Code Online (Sandbox Code Playgroud)

tagging activerecord ruby-on-rails has-many-through polymorphic-associations

6
推荐指数
1
解决办法
2459
查看次数

JPA多态与多个表的关联

实体是否可能与多个表具有一对一多态关联.假设一个实体有两个特定的列,用于:

link_type - 标识应与哪个表关联的列

link_id - 在标识表后定义表的外键的列.

hibernate jpa polymorphic-associations

6
推荐指数
2
解决办法
6437
查看次数

Active Admin 有一种多态形式

我正在尝试设置一个选择菜单以将 ImageGallery 与产品相关联。ImageGallery 是多态的,因为它在几个模型之间共享。Formtastic 似乎对要做什么感到非常困惑。它试图调用一个名为 Galleryable 的方法,这是我的多态关联的名称,产品模型上的 _id (galleryable_id)。

产品

class Product < ActiveRecord::Base
  has_one :image_gallery, as: :galleryable, dependent: :destroy
  accepts_nested_attributes_for :image_gallery, :allow_destroy => true
end
Run Code Online (Sandbox Code Playgroud)

画廊

class ImageGallery < ActiveRecord::Base
  belongs_to :galleryable, polymorphic: true

  validates :title, presence: true

  has_many :images, as: :imageable, dependent: :destroy
  accepts_nested_attributes_for :images, :allow_destroy => true, reject_if: lambda { |t| t['file'].nil? }

end
Run Code Online (Sandbox Code Playgroud)

主动管理表单

form do |f|
    f.inputs "Details" do
      f.input :name
      f.input :category
      f.input :price
      f.input :purchase_path
      f.input :video_panels
      f.input :image_panels
      f.input :image_gallery, :as => …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails polymorphic-associations formtastic activeadmin

6
推荐指数
1
解决办法
2055
查看次数

如何优化休眠多态查询以不加入所有子类

我正在尝试优化休眠查询,并遇到了休眠使查询比我预期的更复杂的问题。

我有一个基类WorkUnit和几个子类CheckEmployee,Meeting,HomeCareRequestWorkUnitAssignment指向WorkUnit

这是课程的草图:

@Entity
@Table(name = "WORK_UNIT_ASSIGNMENT")
public class WorkUnitAssignmentEntity {
    private WorkUnitEntity workUnit;
    ...

    @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
    @JoinColumn(name = "WORK_UNIT_A_WORK_UNIT_ID")
    public WorkUnitEntity getWorkUnit() {
        return workUnit;
    }
}

@Entity
@Table(name = "WORK_UNIT")
@Inheritance(strategy = InheritanceType.JOINED)
public class WorkUnitEntity  {
}

@Entity
@Table(name = "CHECK_EMPLOYEE")
@PrimaryKeyJoinColumn(name="CHECK_EMPLOYEE_ID")
public class CheckEmployee extends WorkUnitEntity {
}

@Entity
@Table(name = "MEETING")
@PrimaryKeyJoinColumn(name = "MEETING_ID")
public class MeetingEntity extends WorkUnitEntity {
}

@Entity …
Run Code Online (Sandbox Code Playgroud)

java optimization hibernate polymorphic-associations

6
推荐指数
0
解决办法
227
查看次数

使用Fluent NHibernate ReferencesAny映射非多态关联

假设我们有两个类,每个类实现一个接口,IParent,如下所示:

public class Foo : IParent
{
    public long Id { get; set; }
    ...
    public IList<Child> Children { get; set; }
    ...
}
public class Bar : IParent
{
    public long Id { get; set; }
    ...
    public IList<Child> Children { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

并且具有IParent类型的父属性的子类,即父类可以是Foo或Bar:

public class Child
{
    public long Id { get; set; }
    ...
    public IParent Parent { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

如何使用FluentNHibernate映射此Parent属性?

我发现这个问题似乎有类似的要求,但没有涉及接口.答案对我来说没有意义,或者在这种情况下似乎适用.

我尝试使用ReferencesAny如下实现映射:

public class ChildMap : …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate fluent-nhibernate polymorphic-associations

6
推荐指数
0
解决办法
154
查看次数

Laravel 多态多对多关系数据透视表与另一个模型的关系

我有如下表结构,如图所示: 数据库图

简而言之,它由几个多对多的多态关系组成,如下所示:

  • 许多resources可以有许多sources,并且数据透视表sourceables包含使数据透视表中的每一行唯一的信息catalog_numberlot_number许多资源也可能来自相同来源或不同来源,通过数据透视表上的目录号和批号来区分。

  • 许多resources也可以有许多publications附加到它,通过publicationables表与notes枢轴表

  • 许多出版物也可以描述资源的来源。

我的问题:

  1. 由于资源的来源是通过数据透视表区分的,sourceables我应该如何保存数据透视表行之间的sourceables关系publications
  2. 您可以在两者和“publicationables”之间有一个自定义中间表模型sourceables来链接到吗publications
  3. 如何检索资源及其所有出版物以及所有相应出版物的来源?

many-to-many polymorphic-associations laravel eloquent

6
推荐指数
1
解决办法
5551
查看次数