标签: polymorphic-associations

通过Rails中的Polymorphic Type查找所有内容?

有没有办法在Rails中找到特定多态类型的所有多态模型?所以如果我有Group,Event和Project都有一个声明,如:

has_many :assignments, :as => :assignable

我可以这样做:

Assignable.all

...要么

BuiltInRailsPolymorphicHelper.all("assignable")

那样就好了.

编辑:

...这样Assignable.all返回[Event, Group, Product](类数组)

ruby-on-rails helpers polymorphic-associations

10
推荐指数
1
解决办法
5014
查看次数

Ruby on Rails ::包含与子模型的多态关联

使用多态关联时,是否可以在仅存在于某些类型中的子模型上运行包含?

例:

class Container
  belongs_to :contents, :polymorphic => true
end
class Food
  has_one :container
  belongs_to :expiration
end
class Things
  has_one :container
end
Run Code Online (Sandbox Code Playgroud)

在视图中我想要做的事情如下:

<% c = Containers.all %>
<% if c.class == Food %>
  <%= food.expiration %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

因此,当我加载c时,我想急切加载到期,因为我知道我将需要最后一个.有没有办法这样做?只定义一个常规:include得到我的错误,因为并非所有封闭类型都有子模型到期.

ruby-on-rails include polymorphic-associations eager-loading rails-activerecord

10
推荐指数
1
解决办法
9905
查看次数

Rails AR validates_uniqueness_of反对多态关系

是否可以验证子模型的属性与多态关系的唯一性?

例如,我有一个名为field属于的模型fieldable:

class Field < ActiveRecord::Base
  belongs_to :fieldable, :polymorphic => :true
  validates_uniqueness_of :name, :scope => :fieldable_id
end
Run Code Online (Sandbox Code Playgroud)

我还有其他几个有很多字段的模型(Pages,Items).所以我想要的是验证字段名称与父模型的唯一性,但问题是,页面和项目偶尔共享相同的ID号,导致验证失败.

我只是做错了还是有更好的方法来做到这一点?

validation activerecord ruby-on-rails polymorphic-associations

10
推荐指数
1
解决办法
2197
查看次数

STI和多晶型物

我的代码有问题

class Post < ActiveRecord::Base
end

class NewsArticle < Post
  has_many :comments, :as => :commentable, :dependent => :destroy, :order => 'created_at'
end

class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true, :counter_cache => true
end
Run Code Online (Sandbox Code Playgroud)

并尝试去获取一些NewsArticle的评论,我在日志中看到类似的东西

  Comment Load (0.9ms)   SELECT "comments".* FROM "comments" WHERE ("comments"."commentable_id" = 1 and "comments"."commentable_type" = 'Post') ORDER BY created_at
Run Code Online (Sandbox Code Playgroud)

奇怪的是"commentable_type"="发布".怎么了?

PS:Rails 2.3.5 && ruby​​ 1.8.7(2010-01-10 patchlevel 249)[i686-darwin10]

activerecord ruby-on-rails single-table-inheritance polymorphic-associations

10
推荐指数
1
解决办法
1634
查看次数

我应该联合索引ActiveRecord多态关联吗?

我有一个我希望非常大的度量表.它具有多态关联,因此它可以属于想要记录某些度量的其他模型.我通常索引像这样的关联列来加速关联加载. 我听说有人谈论联合索引这种关联.这看起来像:

add_index :comments, [:commentable_type, :commentable_id]

但我也听到了反对创建低基数指数的建议,因为索引的收益并没有抵消维持它的开销.由于我的多态关联的_type一半可能在数百万行中只有4-5个值,所以我倾向于只对多态关联的_id部分进行索引.我可能会使用_id列和一些其他未提及的整数和日期时间列创建一些额外的联合索引,但我也不会在这些索引中包含_type.

这是你会做什么/推荐?

migration indexing activerecord ruby-on-rails polymorphic-associations

10
推荐指数
1
解决办法
1623
查看次数

MYSQL基于列数据和表名连接表

我想知道这是否可行.

我希望根据表1的数据加入2个表.示例表1包含列食物,其数据为"热狗".

我有一张叫热狗的桌子.

是否可以像JOIN一样进行JOIN.

SELECT * FROM table1 t join t.food on id = foodid
Run Code Online (Sandbox Code Playgroud)

我知道它不起作用,但它甚至可行,是否有一个工作周围?

提前致谢.

mysql join polymorphic-associations

10
推荐指数
1
解决办法
9260
查看次数

rails polymorphic with includes基于类的类型

假设我们有这些模型

class Message
  belongs_to :messageable, polymorphic: true
end

class Ticket
  has_many :messages, as: :messageable
  has_many :comments
end

class User
  has_many :messages, as: :messageable
  has_many :ratings
end

class Rating
  belongs_to :user
end

class Comment
  belongs_to :ticket
end
Run Code Online (Sandbox Code Playgroud)

现在我想加载所有消息(具有关联的tickets或者users),并根据类的类型加载eager,commentsfor for ticketsratingsforusers

当然Message.includes(:messageable).order("created_at desc")只会包含直接关联的对象,但问题是如何包含从每个模型类型派生的不同关联类型(即在此示例中,如何预先加载comments for ticketsratings for users)?

这只是一个简单的例子,但是更复杂的情况呢,我想为user另一个关联包含其他内容,以及如果该关联需要更多包括什么?

activerecord ruby-on-rails polymorphic-associations eager-loading ruby-on-rails-3

10
推荐指数
1
解决办法
871
查看次数

多态关联在同一模型上具有多个关联

我对我所获得的多态关联感到有些困惑.我需要一个文章模型来获得标题图像和许多图像,但我希望有一个图像模型.更令人困惑的是,Image模型具有多态性(允许其他资源拥有许多图像).

我在我的文章模型中使用此关联:

class Article < ActiveRecord::Base
  has_one :header_image, :as => :imageable
  has_many :images, :as => :imageable
end
Run Code Online (Sandbox Code Playgroud)

这可能吗?谢谢.

ruby activerecord ruby-on-rails polymorphic-associations

9
推荐指数
2
解决办法
5886
查看次数

通用数据库表设计

只是想找出为以下场景设计表的最佳方法:

我的系统中有几个区域(文档,项目,组和客户端),每个区域都可以记录注释.

我的问题是我应该有这样一个表:

CommentID
DocumentID
ProjectID
GroupID
ClientID
etc
Run Code Online (Sandbox Code Playgroud)

只有一个id会有数据,其余的将是NULL,或者我应该有一个单独的CommentType表,并且我的注释表如下:

CommentID
CommentTypeID
ResourceID (this being the id of the project/doc/client)
etc
Run Code Online (Sandbox Code Playgroud)

我的想法是,从索引的角度来看,选项2会更有效.它是否正确?

sql sql-server database-design polymorphic-associations

9
推荐指数
3
解决办法
5222
查看次数

使用整数ID类型字段的多态关联

我有一个表Foo有一个多态的belongs_to关联调用bar.该foos表具有标准bar_id列.但是,bar_type我有一个整数bar_type_id列,而不是基于字符串的列.此列引用id表中的列bar_types.bar_types.name保存表示特定bar实例的类的类的名称.

Rails(理想情况下> = 2.3.10)是否允许这种类型的多态关联?

ruby-on-rails polymorphic-associations ruby-on-rails-2

9
推荐指数
1
解决办法
1736
查看次数