不要被长度吓倒。它实际上可能很简单。虽然我试着到处寻找,但我找不到答案。我希望这对你来说是一个足够好的挑战。
这里是:
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
我想做什么?
我想根据两个条件识别父记录,这些条件必须同时存在两者 :( i)子记录和(ii)依次孩子的孩子记录(即大孩子记录)。
这是什么意思?
假设我们有:
我想找到所有面板,其中有一个特定的StatusDate记录,例如StatusDate.current = y,以及它各自的子节点Status.name = x。
(“当前”实际上是StatusDate记录的布尔值。)
目前发生了什么?
这是我的_condition_fields.html.erb部分:
有什么问题?
现在,ransack在不同记录中应用这些条件。但我希望它们直接应用于:(I)儿童记录和(ii)特定儿童的儿童记录。
知道我该怎么做吗?
非常感谢。
答案 0 :(得分:0)
您是否按以下方式尝试查询:
Panel.ransack({StatusDate_current:0, StatusDate_Status_name: "Installed"})