我正在研究一个Ruby项目并遇到障碍。这是一件简单的事情,但我一直遇到错误,所以我转向SO寻求帮助。
我需要将视图限制为特定用户创建的记录。在这种情况下,供应商的订单。这是我当前的索引控制器(使用will_paginate gem限制为每页30个):
class OrdersController < ApplicationController
before_action :set_order, only: [:show, :edit, :update, :destroy]
before_filter :authenticate_supplier!
def index
@orders = Order.all.order("created_at DESC").paginate(:page => params[:page], :per_page => 30)
end
现在,所有订单都显示而不是所需的 - 只有特定供应商提供的订单才会显示在索引中。我试图沿着这些方向使用某些东西,但没有运气:
def index
@orders = Order.current_supplier.order("created_at DESC").paginate(:page => params[:page], :per_page => 30)
end
为供应商使用设计。
答案 0 :(得分:0)
Devise用于身份验证,您需要的是授权,我建议您查看专门用于此目的的gem,例如cancancan,您在能力文件中定义规则,然后它将在控制器查询中添加条件,这样您就不需要在每次获取这些记录时定义相同的规则。
如果您不想在代码中添加这种复杂性,那么您只需使用供应商对象来获取订单而不是自己的订单类。例如:
# all orders without conditions
Order.all
# orders restricted only to this supplier
current_supplier.orders