長さで威圧しないでください。おそらく実際はかなりシンプルでしょう。私はどこでも探してみましたが、答えは見つかりませんでした。私はこれがあなたにとって十分なチャレンジであることを願っています。ここでRansack:子供とその孫のレコードの条件
は行く:ここ
Panel.rb
has_many :status_dates
has_many :statuses, through: :status_dates
StatusDate.rb
belongs_to :status
belongs_to :panel
def self.ransackable_attributes(auth_object = nil)
%w(current) + _ransackers.keys
end
Status.rb
has_many :status_dates
はスキーマです。
create_table "panels", force: :cascade do |t|
t.string "no"
t.integer "project_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "status_dates", force: :cascade do |t|
t.integer "status_id"
t.integer "panel_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.date "date"
t.boolean "current"
end
add_index "status_dates", ["panel_id"], name: "index_status_dates_on_panel_id"
add_index "status_dates", ["status_id"], name: "index_status_dates_on_status_id"
create_table "statuses", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
は何私はをしたいですか?
私は両方が同時に上に存在して存在している必要があります2つの条件に基づいて、親レコードを識別します:あまりにも(I)子レコードと、(ii)順番に、その子の、子レコード(つまり、壮大子レコード)。
それはどういう意味ですか?
我々が持っていると仮定します。
なStatusDate.current = Y、およびそのそれぞれの子、Status.name = Xその特定StatusDateレコードがある場合、私は、すべてのパネルを見つけたいです。
(「現在」は、実際にStatusDateレコードにブール値です。)
の瞬間に何が起こっていますか?ここで
私_condition_fields.html.erbが部分的である:
問題は何ですか?
今のところ、ransackはこれらの条件をさまざまなレコードに適用します。しかし、私はそれらを直接、(I)子供の記録、(ii)その特定の子供の子供の記録にも適用したい。
どうすればいいですか?
ご協力いただきありがとうございます。
あなたは私がのparamsからこれらの変数にアクセスする方法を知っているだろうか? – BKSpurgeon
あなたはリクエストパラメータを意味しますか? paramsに 'StatusDate_current'と 'StatusDate_Status_name'の値を渡す必要がありますか? –
実際の値がネストされているときはやっかいですが、まだそれを処理していません。私はまだそれを調べている。私は戻ってきて、見つけたら答えを投稿します。ヘルプに感謝します。 – BKSpurgeon