0

こんにちは私は2つのレールモデルを持っています

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およびadmin部分admin_idに含めます。

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