如何製作它以便用戶只能編輯/查看屬於他們的物品使用設計?我似乎無法弄清楚。我研究並發現了一些關於在我的清單控制器索引中設置current_user並創建方法以及將關係放入我的用戶模型和清單模型中的方法。我正在創建一個清單,用戶可以創建一個標題和一個名稱,並將項目添加到該清單,以便我也有一個項目模型。我讀了關於康康,但不太確定這是我正在尋找的。我只想在用戶登錄創建清單時能夠擁有該清單,這些清單隻屬於他們,因此當他們註銷時,不會顯示他們創建的任何清單。當他們重新登錄時會顯示創建的清單。我知道這很簡單,但不能指出任務。任何人都可以幫忙我在這個項目上使用rails 4。謝謝!我該如何製作,以便用戶只能編輯/查看屬於他們的物品使用設計?
回答
有權限的兩個主要方面。認證和授權。
設計提供身份驗證,這基本上是「該用戶是這個人。」它通過登錄驗證。
像cancan庫有助於提供授權,這是「該用戶被允許做這個動作。」您可以使用康康舞到Define an ability with a block做這樣的事情:
can :read, Item, Item.all do |item|
item.owner == current_user
end
感謝您的信息,也將檢查到這一點。 – Awhitey98
在用戶模式:
# user.rb
has_many :items #or somehow like this if you have joins or something else
在控制器:
before_filter :authenticate_user! #inherit devise helpers and methods in controller
def index
@items = current_user.items #for the current !!signed-in!! user
# other necessary code...
end
def edit
@item = current_user.items.find(params[:id])
# other necessary code... show action would include the same row for @item finding
end
康康舞寶石是真的,您可以使用太如果你有很多的授權問題不只是你提到的......也有很多教程的周圍,還不是最壞的一種是康康舞文檔中
您必須將user_id外鍵放在您想要 放置此限制的所有模型中。
與編輯和視圖操作做這樣的事情
例如: -
用戶的has_many:帖子
和後belong_to:用戶
def edit
@post = current_user.posts.find(params[:id])
end
def update
@post = current_user.posts.find(params[:id])
@post.update_attributes(params[:id])
respond_with @post
end
def show
@post = current_user.posts.find(params[:id])
end
謝謝,我會嘗試以這種方式工作。我知道我在正確的方向,但無法到達那裏。 – Awhitey98
你可能想編寫如下的控制器:
class ChecklistsController < ApplicationController
before_action :set_checklist, only: [:show, :edit, :update, :destroy]
def index
@checklists = current_user.checklists
end
def new
@checklist = current_user.checklists.new
end
def create
@checklist = current_user.checklists.create(checklist_params)
end
def show
end
def edit
end
def update
@checklist.update_attributes(checklist_params)
# ...
end
def destroy
@checklist.destroy
# ...
end
private
def load_checklist
@checklist = current_user.checklists.find(params[:id])
end
def checklist_params
params.require(:checklist) # .permit(...)
end
end
感謝您的信息。我會在稍後檢查。 – Awhitey98
我知道這是一個很老的文章,但回答你的問題,你需要做的就是添加過濾器到您的顯示頁面。對於你想要做的事情,這是一個簡單的解決方案。
這裏是你如何顯示您的文章,如果只有創建者可以編輯自己的帖子,它的工作對我來說,快速構建功能。
<tbody>
<% @posts.each do |post| %>
<tr>
<td><%= post.content %></td>
<td> - <%= post.user.username %> (<%= post.user.first_name %> <%= post.user.last_name %>)</td>
<% if post.user.id == @user %>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Delete', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% end %>
</tr>
<% end %>
</tbody>
在您的控制器,所有你需要做的就是加入這一行。
@user = current_user.id
對不起它的晚,但希望它可以幫助別人的未來!
您可能還需要將以下內容添加到用戶模型中。
accepts_nested_attributes_for :posts
- 1. 如何在Django中驗證我的表單或視圖,以便他們只能將用戶模型編輯爲屬於該數據的用戶模型?
- 2. 如何在Sharepoint中設置用戶權限,以便他們只能看到他們有權限的圖像?
- 3. 如何限制當前登錄的用戶只能看到屬於他們的產品?
- 4. 限制用戶只能在Bugzilla 3.4.4中查看他們的組/產品錯誤
- 5. 如何允許設計用戶編輯他們的profil?
- 6. 使用Javascript查看其物品屬性
- 7. 我如何讓用戶只能查看他們的列表與ruby和sinatra
- 8. 如何在設計中編輯用戶控制器,以便無需更改我的用戶個人資料
- 9. SharePoint 2010公告板 - 用戶只能編輯他們的帖子
- 10. django - 限制用戶只編輯他們自己的信息
- 11. 每個frontoffice只能查看他們的用戶 - PHP
- 12. Sharepoint列表,用戶只能查看他們自己的項目
- 13. 如何爲此頁面創建一個PHP「編輯」表單,以便用戶可以編輯他們的選擇?
- 14. 限制作者,查看,編輯,他們在PHP即時創建不使用WordPress
- 15. 如何使用他們查看的產品定位Facebook用戶而不購買
- 16. 設置TFS 2013,以便用戶只能看到錯誤
- 17. Rails:使用Devise所以用戶只能看到他們的內容
- 18. 如何限制Sitecore作者只能編輯他們創建的項目?
- 19. Rails 3 ActiveAdmin CanCan。如何設置該用戶應該只看到屬於他的記錄?
- 20. 我如何讓用戶只能在Wordpress中看到他們的內容?
- 21. 我應該使用哪個FIrebase產品,以便用戶可以看到他在應用中上傳的圖像並查詢數據應該不那麼耗時?
- 22. ASP.NET MVC - 限制用戶可以查看/編輯的內容
- 23. 如何只顯示物品的地圖,如果他們存在
- 24. 我很困惑,我如何控制緩存,以便我的客戶可以看到網站編輯
- 25. Rails + Devise:如何限制用戶編輯不屬於他的記錄
- 26. 用C++製作一個文件,只有用戶可以看到該文件並編輯它的權限
- 27. 授權用戶使用Rails編輯他們的帳戶
- 28. 允許用戶只編輯他們的奏鳴曲
- 29. cakephp 3允許用戶只編輯他們的個人資料
- 30. 用戶如何能夠添加,編輯和查看他們自己的主題和主題的描述?
所有的下CURRENT_USER您的疑問只是範圍。 'current_user.checlists.all',current_users.checklists.find(params [:id])等。 – Doon