【发布时间】:2015-05-02 12:17:12
【问题描述】:
我有一个非常简单的数据模型,如下:
class Object < ActiveRecord::Base
has_many :object_tags
has_many :tags, through: :object_tags
end
class Tag < ActiveRecord::Base
has_many :object_tags
has_many :objects, through: :object_tags
end
class ObjectTag < ActiveRecord::Base
belongs_to :object
belongs_to :tag
end
Object 和 Tag 都有一个 name 属性。
我想要做的是,对于一组已定义的对象@objects,获取我的一组对象可以采用的所有可能标签名称的数组。我希望能够做这样的事情(这是错误的,但仅用于说明目的):@objects.pluck(:tags.name).uniq
我已经尝试了很多东西,包括包含和连接,但没有什么能让我得到我的结果。我得到的最接近的是@objects.includes(:tags).pluck(:tags),但它只获取我的标签数组,然后我无法检索名称。
这可能是一个非常简单的问题,但我是 Rails 的初学者,在我的研究中找不到任何东西。
感谢您的帮助!
【问题讨论】:
-
Objectit's a bad name for your model. Object 是所有 Ruby 对象的默认根。 -
试试
@objects.collect(&:tags) -
我得到了它与
@object.includes(:tags).uniq.map{ |tag| tag.name }的合作。这听起来像是一个合理的解决方案吗? -
@Alexandre,
@object或@objects? -
它返回什么
@objects.collect(&:tags).flatten?
标签: ruby-on-rails activerecord rails-activerecord