将集合分配给查询

时间:2013-07-19 10:44:02

标签: ruby-on-rails

我有一个返回时间表记录的模块。当提供范围参数时,items方法对时间表进行范围限定,因此它只返回特定的时间表。如何在另一个查询中使用该查询的结果?它是关于在team_users查询中使用super.where(user_id: team_users)

module Collections
  class TimesheetCollection < Collection

    module TeamScope
      def items
        if params[:scope].present?
          team_users = User.from_team(@manager)
          super.where(user_id: team_users)
        else
          super
        end
      end
    end

    attr_reader :ability, :params

    def initialize(ability, params, manager)
      @ability = ability
      @params  = params
      @manager = manager
      extend TeamScope
    end

    def items
      Timesheet.unscoped
    end

    def paginated
      extend Pagination
      self
    end
  end
end

1 个答案:

答案 0 :(得分:0)

对于有效记录,您可以传递array of ids/values。对于您的查询,您可以尝试执行以下操作:

team_users = User.from_team(@manager)
super.where(user_id: team_users.collect{|u| u.id})