私はちょうど適切なものを検索していないかどうかはわかりませんが、選択ボックスのコレクションとして使用するスコープを設定するために探しています。ActiveRecordスコープネストしたオブジェクト
ノートブックモデル:
class Notebook < ActiveRecord::Base
has_many :notes
end
注モデル:
class Note < ActiveRecord::Base
belongs_to :notebook
end
私は(このため)重要な属性はnote_type
され、ノート上のいくつかの属性を持っています。今のところ、note_typeはcheck_list
,text
、またはbookmark
となります。
Notebooks.notes_without_check_lists
がダウンので、ユーザーはだけ選択ドロップダウンノートブックからnote_type
さcheck_list
で任意のnotes
が含まれていないことができます。
私の目標は、この作業のようなものを持っていることです。私は各note
の反復処理をどこで行うべきかわからないので、親の有無を判断するにはnotebook
をコレクションに含めることができます。
EDIT
現在、私は4つのNotebook
レコードを持っています。 4つのレコードのうち、メモタイプがcheck_listのノートが1つだけ含まれています。そのノートには合計2つのノートが含まれていますが、そのうちの1つのノートタイプはcheck_list
です。これは事実だから、ノートブックの他のノートとは関係なく、そのノートブック全体をスコープから除外したいと思います。
ご協力いただければ幸いです。
私はこれは本当に近いと思います。しかし、私は実際にこれを使ってデータベースにある合計より多くのレコードを取得しています。たとえば、合計4つのノートブックオブジェクトがあり、そのうち1つにチェックリスト付きメモが実際に含まれています。これにより、4つのレコードすべてと、3番目のレコードのコピーが返されます。私はもう少し調査をしていますが、少なくともこのコードのどこかで私を得ることに感謝したいと思います。 – gr8
'joins(:notes).where(notes:{note_type: 'check_list'})'を使用すると、チェックリストを含む1つのレコードが返されます。 – gr8
@ jeepagooster私は答えを編集しました、 'group'の部分に注意してください。その答えを受け入れることを確認したら(回答スコアの近くのチェックマークを探してください) –