嗨我有两个铁轨模型
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)似乎做了一些远程相似的事情,因为它根据与儿童模特,但仍试图弄清楚如何根据我的情况修改它......
非常感谢!!!
答案 0 :(得分:2)
应该有效:
@feedbacks = Feedback.includes(:conversations).where("status = ? and conversations.author = ?", unread_state, admin_id).select{|a| a.conversations.last().author == admin}
当然,请将您当前的值包含在unread_status
,admin
和admin_id
部分。
答案 1 :(得分:0)
@feedbacks = Feedback.where("status = ? and author = ?", "unread", "admin")