ActiveRecord :: AssociationRelation sql变量评估

时间:2014-10-20 06:31:03

标签: activerecord

我陷入了一个非常奇怪的问题。我的项目是我使用' load_and_authorize_resource'为了从数据库中检索信息。 更确切地说,我有ItemsController和action #index。在这个动作中,我有一个类ActiveRecord :: AssociationRelation的实例变量@items。如果我将任何参数传递给动作索引(例如,ID数组),它将自动合并到此变量。但! @ items.to_sql返回以下内容:

SELECT "items".* FROM "items"  WHERE "items"."user_id" = $1 

因此,由于查询中的这个奇怪变量,我的一些代码只是因为w" $ 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

0 个答案:

没有答案