1
,並開始學習康康舞+設計Rails的康康舞ability.rb
我有 '用戶' 表(設計)
我有 '帖子' 表(與 'USER_ID' 字段)
我有 '角色' 表(具有 '名稱' 字段)
- 1 - 管理員
- 2 - 用戶
我有users_roles(與 'USER_ID' 和 'ROLE_ID')
我創建2個用戶 '用戶' 角色
並創建1個用戶具有 '管理員' 角色
user.rb
has_many :posts
has_many :users_roles
has_many :roles, :through => :users_roles
role.rb
has_many :users_roles
has_many :users, :through => :users_roles
users_role.rb
belongs_to :user
belongs_to :role
而且有一個問題:
i create ability.rb
與
def initialize(user)
user ||= User.new
if user.persisted?
#loged in
can :read, Post
can :create, Post
can :update, Post , :user_id => user.id
can :destroy, Post , :user_id => user.id
else
#not logged
can :read, Post
end
在我的意見/職位/ index.html.erb
<% @posts.each do |post| %>
<tr>
<td><%= post.user.email %></td>
<td><%= post.title %></td>
<td><%= post.text %></td>
<td><%= link_to 'Show', post %></td>
<% if can? :update, Post %>
<% if current_user.id == post.user.id %>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<% end %>
<% end %>
<% if can? :destroy, Post %>
<% if current_user.id == post.user.id %>
<td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% end %>
<% end %>
</tr>
<% end %>
</table>
<br />
<!-- ???почему Post ? -->
<% if can? :create, Post %>
<%= link_to 'New Post', new_post_path %>
<% end %>
在這種情況下我檢查,如果用戶登錄 - 他可以讀取和創建,更新,破壞(如果他是作者日期),如果用戶沒有登錄(來賓) - 只能讀取
,但我不知道如何改變我的ability.rb做到這一點:
- 我有客人(只讀)
- 我有用戶(可以讀取和創建,更新,破壞(如果他是作者日期))
- 我有一個管理員(可以讀取,創建,更新,銷燬)
注我已經有作用表(2個角色)和3個用戶(1個具有管理員角色,2個具有用戶角色)
我得到了 –
我有:,通過關係(我解決了這個問題) –