Rails: 使用 CanCanCan 能力隐藏元素
Rails: Using CanCanCan Abilities to hide elements
我正在使用 CanCanCan gem。根据documentation你可以定义能力。那对我有用。我想要做的是限制对包含值的记录的访问。类似于:
can :crud, Order, :brand == empty?
如果订单 table 的品牌列为空,则应仅允许用户查看记录。因为我的例子显然不起作用..你会怎么做?
这不是 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 查询条件一起使用。
我正在使用 CanCanCan gem。根据documentation你可以定义能力。那对我有用。我想要做的是限制对包含值的记录的访问。类似于:
can :crud, Order, :brand == empty?
如果订单 table 的品牌列为空,则应仅允许用户查看记录。因为我的例子显然不起作用..你会怎么做?
这不是 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 查询条件一起使用。