0

嗨,我有两个导轨模型

class Feedback < ActiveRecord::Base
  has_many :conversations, :dependent => :destroy

class Conversation < ActiveRecord::Base
  belongs_to :feedback, :touch => true

在架构中

create_table "conversations", :force => true do |t|
t.text     "content"
t.integer  "feedback_id"
t.datetime "created_at"
t.datetime "updated_at"
t.string   "author"
end

create_table "feedbacks", :force => true do |t|
t.datetime "created_at"
t.datetime "updated_at"
t.string   "status"
end

请注意,我已经从与这个问题无关的模型中删除了列和关系,所以请不要建议我以不同的方式重组模型

在我的控制器中,我有一种方法,我想选择状态为“未读”且其最后更新对话的作者是“管理员”的反馈

我知道以下选择状态为“未读”的反馈,但我如何扩展它以选择符合我的对话作者要求的反馈?

@feedbacks = Feedback.where(:status => "unread")

我发现这个网站(http://m.onkey.org/find-users-with-at-least-n-items)似乎在做一些远程相似的事情,因为它根据与子模型相关的条件选择父级,但仍在试图弄清楚如何为我的情况修改它......

提前非常感谢!!!

4

2 回答 2

2

它应该工作:

@feedbacks = Feedback.includes(:conversations).where("status = ? and conversations.author = ?", unread_state, admin_id).select{|a| a.conversations.last().author == admin}

当然,包括您当前的值到unread_status,adminadmin_id部分。

于 2012-05-11T17:43:44.357 回答
0
@feedbacks = Feedback.where("status = ? and author = ?", "unread", "admin")
于 2012-05-11T17:10:51.420 回答