ActiveRecord::AssociationRelationSQL变量求值

ActiveRecord::AssociationRelationSQL变量求值,activerecord,Activerecord,我陷入了一个非常奇怪的问题。在我的项目中,我使用“加载资源”和“授权资源”从数据库中检索信息。 更准确地说,我有ItemsController和action索引。在这个动作中,我有一个实例变量@items,它属于ActiveRecord::AssociationRelation类。如果我将任何参数传递给操作索引,例如ID数组,它将自动合并到此变量。但是@items.to_sql返回以下结果: SELECT "items".* FROM "items" WHERE "items"."user_i

我陷入了一个非常奇怪的问题。在我的项目中,我使用“加载资源”和“授权资源”从数据库中检索信息。 更准确地说,我有ItemsController和action索引。在这个动作中,我有一个实例变量@items,它属于ActiveRecord::AssociationRelation类。如果我将任何参数传递给操作索引,例如ID数组,它将自动合并到此变量。但是@items.to_sql返回以下结果:

SELECT "items".* FROM "items"  WHERE "items"."user_id" = $1 
因此,由于查询中的这个奇怪变量-$1,我的一些代码没有编写。我需要的是用一个来自params的实际值替换这个变量。当然,我找到了一个解决方案:

@items.where_values.each{ |node| node.right = params[:user_id] if node.left.name = 'user_id' }
但事实上我不想做这样的事。也许你们知道如何用params[:user_id]替换$1?提前谢谢你

控制器代码:

class ItemsController < ApplicationController
  load_and_authorize_resource :items

  def index
    ArchiveWorker.archivate(@items)
  end
end

你能分享一些控制器代码吗?控制器代码太长了,所以我添加了它的轻版本。我不知道这是否有帮助。你能通过以下方式发布你的信息吗?错误必须在那里。还有您可能在项目模型上使用的任何默认作用域。