如何修改设计,以便在Rails 4.2.4上只读取引脚

时间:2016-01-28 10:53:29

标签: ruby-on-rails ruby devise

我是一名初级开发人员,为客户构建我的第一个Web应用程序,使用Rails 4.2.4,Devise进行身份验证,使用Pins脚手架来销售客户产品。

一切正常,用户可以注册和登录,然后创建,阅读,更新和销毁别针。

问题是,我不希望用户能够创建,更新或销毁index.html.erb页面上的引脚。 (只有这样的观点是客户销售产品)

如果你看附图。当您在主页上单击女士产品BTN时,它会将您带到index.html.erb,其中列出了引脚。

注意:我仍然希望用户能够通过DEVISE注册和登录,但只是更新他们的地址详细信息以便发货,而不是更改引脚内容。引脚CRUD内容应仅由客户创建。

我应该如何处理这个问题。

enter image description here

1 个答案:

答案 0 :(得分:2)

  

我应该如何处理这个

您正在查看authorization ...

  • 身份验证是验证您的身份(登录)的过程。
  • 授权是验证您是否有权访问某些内容(权限)的过程。

-

设计是身份验证(用户已登录),授权是另一回事。

Ryan Bates(RailsCasts)对它做了一个very good video & tutorial - 他创造了一个名为CanCanCan的宝石,它现在是Rails授权的堡垒; Pundit是另一个。

您要问的是如何向某些类型的用户提供权限以执行某些操作。答案是使用CanCanCanPundit评估用户是否拥有CRUD的凭据Pin

#Gemfile 
gem "cancancan"

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

  def initialize(user) #-> looks for "current_user" from devise
    user ||= User.new # guest user (not logged in)
    if user.customer?
      can :manage, Pin
    else
      cannot :manage, Pin
    end
  end
end

#app/controllers/pins_controller.rb
class PinsController < ApplicationController
   load_and_authorize_resource
end

以上内容仅允许设置为customer的用户管理Pin。由于您对模型/控制器代码的了解不多,以上最具体的我可以了解它。