簡體   English   中英

Rails:使用CanCanCan Abilities隱藏元素

[英]Rails: Using CanCanCan Abilities to hide elements

我正在使用CanCanCan寶石。 根據文檔,您可以定義能力。 那對我有用。 我想做的是限制對包含值的記錄的訪問。 就像是:

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

如果“訂單”表的品牌列為空,則僅應允許用戶查看記錄。 作為我的例子顯然不起作用..你會怎么做?

這不是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 ,並執行以下操作

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

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

我之所以不這樣做,是因為CanCanCan是用於授權的 -檢查用戶是否有權執行某項操作。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM