Ruby on rails 我如何修改Desive,以便在Rails 4.2.4上只读取管脚

Ruby on rails 我如何修改Desive,以便在Rails 4.2.4上只读取管脚,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我是一名初级开发人员,使用Rails 4.2.4为客户构建了我的第一个web应用程序,设计了用于认证和PIN脚手架,用于列出客户的销售产品 一切正常,用户可以注册和登录,然后创建、读取、更新和销毁PIN 问题是,我不希望用户能够在我的index.html.erb页面上创建、更新或销毁PIN。(只有这样的视图才是客户销售产品) 如果你看附件中的图片。当您单击主页上的女士产品BTN时,它会将您带到index.html.erb,其中列出了PIN 注意:我仍然希望用户能够通过Desive注册和登录,但只

我是一名初级开发人员,使用Rails 4.2.4为客户构建了我的第一个web应用程序,设计了用于认证和PIN脚手架,用于列出客户的销售产品

一切正常,用户可以注册和登录,然后创建、读取、更新和销毁PIN

问题是,我不希望用户能够在我的index.html.erb页面上创建、更新或销毁PIN。(只有这样的视图才是客户销售产品)

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

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

我应该如何处理这个问题

我应该如何处理这个问题

你在看

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

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

Ryan Bates(Railscapsts)对此做了一个解释——他制作了一个宝石,名为,现在是Rails授权的堡垒;这是另一个

您要问的是如何向属于特定类型的用户授予执行特定操作的权限。答案是使用
CanCanCan
Pundit
评估用户是否具有CRUD a
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
#文件
宝石“坎坎坎”
#app/models/ability.rb
班级能力
包括CanCan::能力
def initialize(user)#->从设备中查找“当前用户”
user | |=user.new#来宾用户(未登录)
如果是user.customer?
can:管理,Pin
其他的
无法:管理,Pin
结束
结束
结束
#app/controllers/pins_controller.rb
类PinsController<应用程序控制器
加载和授权资源
结束

以上仅允许设置为
客户的用户管理
Pin
。由于您对型号/控制器代码知之甚少,以上是我能提供的最具体的信息。

仅确认
Pin
是您的型号名称吗?您似乎有不同类型的用户,如客户和其他用户?我说得对吗?。。但是什么是pin?@RichPeck我有两个模型-user.rb和pin.rb。请在这里查看我的模型,其中包含活跃的用户关联-非常清晰的定义,先生+1汉克斯奥雅纳,意义重大!本质上,我已经过度开发了登录,以至于登录的用户可以创建、更新和销毁以jQuery方式列出的PIN。(但我不能拥有LOL,因为这是客户在PIN上列出的产品)。我希望用户能够登录,但无权登录,只能查看内容。如果是这样,我需要为客户建立一个管理员来列出他的产品,并减少用户在他们的Rich上签名时可用的功能,真的很感谢您的时间。我在上面的模型上加了一个链接。你没有过度开发,一切都很好。我只是说你想要实现的功能叫做授权。它在你目前正在做的事情之上