虽然我之前有过这个问题,但没有得到任何有用的东西而且被卡住了。好的,我的应用程序是一个简单的ebay克隆,我将用户划分为角色买家和卖家,角色ID为1和2.当有人注册或登录时,他们被转移到应用程序的索引页面,现在我希望买家看到的东西在索引页面上与卖家不同,为此我尝试了if和else方法但没有发生任何事情。我做错了吗? 我还有其他办法来实现这个目标。
我的Index.html.erb文件
['buyers', 'sellers'].each do |role|
Role.where(name: role).first_or_create
end
和
我的种子.rb
.stop()
答案 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;等等时才能销售。)