Rails - 根据上次更新的has_many子项的标准选择父级

时间:2012-05-11 17:07:23

标签: ruby-on-rails

嗨我有两个铁轨模型

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

请注意,我已从模型中删除了与此问题无关的列和关系,因此请不要建议我对模型进行不同的重组

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

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

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

我发现这个网站(http://m.onkey.org/find-users-with-at-least-n-items)似乎做了一些远程相似的事情,因为它根据与儿童模特,但仍试图弄清楚如何根据我的情况修改它......

非常感谢!!!

2 个答案:

答案 0 :(得分:2)

应该有效:

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

当然,请将您当前的值包含在unread_statusadminadmin_id部分。

答案 1 :(得分:0)

@feedbacks = Feedback.where("status = ? and author = ?", "unread", "admin")