2015-12-16 28 views
0

我正在使用CanCanCan創業板。根據documentation你可以定義能力。這對我有用。我想要做的是限制對包含值的記錄的訪問。例如:Rails:使用CanCanCan能力來隱藏元素

can :crud, Order, :brand == empty? 

如果訂單表的品牌欄爲空,則只應允許用戶查看該記錄。因爲我的例子顯然不起作用。你會怎麼做?

回答

1

這是不正確的使用情況CanCanCan - 這將是更適合使用在SQL特定查詢:

#app/models/order.rb 
class Order < ActiveRecord::Base 
    scope :no_brand, -> { where(brand: "") } 
end 

#app/controllers/orders_controller.rb 
class OrdersController < ApplicationController 
    def index 
     @orders = Order.no_brand 
    end 
end 

當然,你使用CanCanCan,並做到這一點,你會做this

#app/models/ability.rb 
class Ability 
    include CanCan::Ability 

    def initialize(user) 
    can :read, Order, brand: "" 
    end 
end 

之所以我不會做那是因爲CanCanCan意思是授權 - 檢查用戶是否有permission做某事。

您的用例最適合與SQL查詢條件一起使用。