向用户添加特定角色以查看页面上的内容

时间:2015-09-19 08:16:39

标签: ruby-on-rails if-statement roles

虽然我之前有过这个问题,但没有得到任何有用的东西而且被卡住了。好的,我的应用程序是一个简单的ebay克隆,我将用户划分为角色买家和卖家,角色ID为1和2.当有人注册或登录时,他们被转移到应用程序的索引页面,现在我希望买家看到的东西在索引页面上与卖家不同,为此我尝试了if和else方法但没有发生任何事情。我做错了吗? 我还有其他办法来实现这个目标。

我的Index.html.erb文件

['buyers', 'sellers'].each do |role|
    Role.where(name: role).first_or_create
end

我的种子.rb

.stop()

1 个答案:

答案 0 :(得分:0)

您需要更多地研究系统结构。具体来说,您询问如何将买家/卖家发送到不同的页面(这表明主要的系统鸿沟),而我认为您真的在询问authorization

  
      
  • 授权 =授予用户执行某项操作的权限
  •   
  • 身份验证 =他们是用户吗?
  •   

我认为你应该有一个基础级用户(没有"角色"),能够为每个用户分配特定的授权能力。

这基本上会使每个用户成为买家,但权限要出售的用户除外。通过这种方式,您可以指定"级别"对于您的用户,如果他们的数据集中具有该级别,则允许他们执行操作。

-

我希望它设置如下:

#app/models/user.rb
class User < ActiveRecord::Base
   # columns id | username | password | role_id | etc
   belongs_to :role
   def has_role? test_role
       role.id == test_role
   end
end

#app/models/role.rb
class Role < ActiveRecord::Base
   # columns id | name | description | etc
   has_many :users
end

这将使您能够调用以下内容:

<%= link_to "Add a new Product", new_product_path, class: "btn btn-success" if current_user.has_role? "1" %>

这使您能够向Role模型添加一系列角色,为每个用户分配一个角色。这将定义用户可以访问的功能量(IE只有在级别&#34; 2&#34;等等时才能销售。)