Ruby on rails 3.1 当注释可以属于另一个注释时,如何查询多态注释?

Ruby on rails 3.1 当注释可以属于另一个注释时,如何查询多态注释?,ruby-on-rails-3.1,comments,polymorphism,Ruby On Rails 3.1,Comments,Polymorphism,所以我尝试对多态模型进行一个相对高级的查询。我有以下型号: class Project < ActiveRecord::Base has_many :project_stakeholders, :dependent => :destroy has_many :features, :dependent => :destroy has_many :iterations, :dependent => :destroy has_many :comments, :a

所以我尝试对多态模型进行一个相对高级的查询。我有以下型号:

class Project < ActiveRecord::Base
  has_many :project_stakeholders, :dependent => :destroy
  has_many :features, :dependent => :destroy
  has_many :iterations, :dependent => :destroy
  has_many :comments, :as => :commentable, :dependent => :destroy
end

class ProjectStakeholder < ActiveRecord::Base
  belongs_to :project
  has_many :comments, :as => :commentable, :dependent => :destroy
end

class Feature < ActiveRecord::Base
  belongs_to :project
  has_many :comments, :as => :commentable, :dependent => :destroy
end

class Iteration < ActiveRecord::Base
  belongs_to :project
  has_many :comments, :as => :commentable, :dependent => :destroy
end

class User < ActiveRecord::Base
  has_many :comments, :dependent => :destroy
end

class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
  belongs_to :created_by, :class_name => 'User'
end
class项目:destroy
有很多:功能,:依赖=>:销毁
有多个:迭代,:依赖=>:销毁
有很多:注释,:as=>:commentable,:dependent=>:destroy
结束
类project涉众:commentable,:dependent=>:destroy
结束
类功能:commentable,:dependent=>:destroy
结束
类迭代:commentable,:dependent=>:destroy
结束
类用户:销毁
结束
类注释true
属于:创建人:class\u name=>'User'
结束
我正在尝试查找当前用户对特定项目的注释(project.comments、project.features.comments、project.iterations.comments、project.project\u涉众.comments),并将它们按降序排列在created\u中

我想到的最好的办法是:

Class Project < ActiveRecord::Base
  def all_comments_for_user(user)
    Comment.where(:created_by_id => user.id).select { |c| c.commentable.attributes.has_key?('project_id') }.select { |c| c.commentable.project == self } | comments.where(:created_by_id => user)
  end
end
Class项目user.id)。选择{c | c.commentable.attributes.has_key?('project_id'))}。选择{c | c.commentable.project==self}注释。其中(:created_by_id=>user)
结束
结束
但这并没有解决递减的create_at序列。

类项目Class Project < ActiveRecord::Base
  def all_comments_for_user(user)
    Comment.where(:created_by_id => user.id).order('created_at DESC').select { |c| c.commentable.attributes.has_key?('project_id') }.select { |c| c.commentable.project == self } | comments.where(:created_by_id => user)
  end
end
为用户(用户)定义所有注释 Comment.where(:created_by_id=>user.id)。order('created_at DESC')。选择{c | c.commentable.attributes.has_key?('project_id'))}。选择{c | c.commentable.project==self}注释。其中(:created_by_by_id=>user) 结束 结束
这行吗?我刚刚添加了订单('created_at DESC')

Boo。。。它没有对“管道”到第一个数组的project.comments进行排序。我无法理解。你能解释一下发生了什么事吗?此外,您还可以解释您试图对| comments.where(:created_by_id=>user)做什么。注释也可以属于项目。这就是把它们收集起来,并将它们添加到属于相关项目的注释的数组中。