有没有办法在Rails中找到特定多态类型的所有多态模型?所以如果我有Group,Event和Project都有一个声明,如:
has_many :assignments, :as => :assignable
我可以这样做:
Assignable.all
...要么
BuiltInRailsPolymorphicHelper.all("assignable")
那样就好了.
编辑:
...这样Assignable.all返回[Event, Group, Product](类数组)
使用多态关联时,是否可以在仅存在于某些类型中的子模型上运行包含?
例:
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
是否可以验证子模型的属性与多态关系的唯一性?
例如,我有一个名为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
我的代码有问题
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
我有一个我希望非常大的度量表.它具有多态关联,因此它可以属于想要记录某些度量的其他模型.我通常索引像这样的关联列来加速关联加载. 我听说有人谈论联合索引这种关联.这看起来像:
add_index :comments, [:commentable_type, :commentable_id]
但我也听到了反对创建低基数指数的建议,因为索引的收益并没有抵消维持它的开销.由于我的多态关联的_type一半可能在数百万行中只有4-5个值,所以我倾向于只对多态关联的_id部分进行索引.我可能会使用_id列和一些其他未提及的整数和日期时间列创建一些额外的联合索引,但我也不会在这些索引中包含_type.
这是你会做什么/推荐?
migration indexing activerecord ruby-on-rails polymorphic-associations
我想知道这是否可行.
我希望根据表1的数据加入2个表.示例表1包含列食物,其数据为"热狗".
我有一张叫热狗的桌子.
是否可以像JOIN一样进行JOIN.
SELECT * FROM table1 t join t.food on id = foodid
Run Code Online (Sandbox Code Playgroud)
我知道它不起作用,但它甚至可行,是否有一个工作周围?
提前致谢.
假设我们有这些模型
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 tickets和ratingsforusers
当然Message.includes(:messageable).order("created_at desc")只会包含直接关联的对象,但问题是如何包含从每个模型类型派生的不同关联类型(即在此示例中,如何预先加载comments for tickets和ratings for users)?
这只是一个简单的例子,但是更复杂的情况呢,我想为user另一个关联包含其他内容,以及如果该关联需要更多包括什么?
activerecord ruby-on-rails polymorphic-associations eager-loading ruby-on-rails-3
我对我所获得的多态关联感到有些困惑.我需要一个文章模型来获得标题图像和许多图像,但我希望有一个图像模型.更令人困惑的是,Image模型具有多态性(允许其他资源拥有许多图像).
我在我的文章模型中使用此关联:
class Article < ActiveRecord::Base
has_one :header_image, :as => :imageable
has_many :images, :as => :imageable
end
Run Code Online (Sandbox Code Playgroud)
这可能吗?谢谢.
只是想找出为以下场景设计表的最佳方法:
我的系统中有几个区域(文档,项目,组和客户端),每个区域都可以记录注释.
我的问题是我应该有这样一个表:
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会更有效.它是否正确?
我有一个表Foo有一个多态的belongs_to关联调用bar.该foos表具有标准bar_id列.但是,bar_type我有一个整数bar_type_id列,而不是基于字符串的列.此列引用id表中的列bar_types.bar_types.name保存表示特定bar实例的类的类的名称.
Rails(理想情况下> = 2.3.10)是否允许这种类型的多态关联?
activerecord ×5
helpers ×1
include ×1
indexing ×1
join ×1
migration ×1
mysql ×1
ruby ×1
sql ×1
sql-server ×1
validation ×1