Ransack搜索显示操作更新关联对象的user_id

时间:2017-10-26 15:12:00

标签: ruby-on-rails ransack

我想使用Ransack gem在用户的节目视图中搜索属于operators的{​​{1}}列表。但是我得到了一个完全出乎意料的结它更新了操作员的USER_ID。

检查出来:

我正在使用Rails 5和ransack gem。我在用户的节目视图中有一个搜索表单。这是形式:

user

当我搜索时,会发生以下情况:

<%= search_form_for @q, url: current_user, class: "form-group input-group-btn" do |f| %>

因此,此搜索表单正在更新关联的关联对象的user_id。

以下是我在用户控制器中的show动作:

(0.5ms)  BEGIN
SQL (0.9ms)  UPDATE "operators" SET "user_id" = NULL WHERE "operators"."user_id" = $1 AND "operators"."id" = 3  [["user_id", 3]]
(0.8ms)  COMMIT

以下是完整表格:

def show
    @user = User.find(params[:id])

    @q = @user.operators.ransack(params[:q])
    @user.operators = @q.result(distinct: true).order("created_at ASC")
end

1 个答案:

答案 0 :(得分:2)

仅发送@operators变量

def show
    @user = User.find(params[:id])

    @q = Operator.where(user_id: current_user).ransack(params[:q])
    @operators = @q.result(distinct: true).order("created_at ASC")
end