我有以下表格:用戶,員工,聯繫人。員工和聯繫人belongs_to用戶和用戶has_one聯繫人或has_one員工。當創建新的聯繫人或員工時,我有他們的模型創建一個新的用戶。Rails - 我想允許用戶只更改其配置文件
我希望聯繫人(最終用戶)能夠編輯他們自己的聯繫人記錄。所以,我有以下的鏈接:
<li><%= link_to "Edit Profile", edit_contact_path(current_user.contact) %></li>
這將調出他們的記錄,他們可以編輯它。但是,我不希望他們能夠通過其他contacts.id重新輸入網址並編輯他們的記錄。
我嘗試以下,但它並不能阻止他們:
<% if current_user.contact = @contact %>
<%= render 'form' %>
<% end %>
僅供參考 - 我還允許管理員的人與此代碼編輯聯繫人記錄:
<% if current_user.admin? %>
<%= render 'form' %>
<% end %>
要解釋進一步 - 網址如下所示:
http://localhost:5000/contacts/4/edit
而且如果你用6代替4,它仍然會提示那個記錄器d。
感謝您的幫助!
我真的希望你的意思是'如果current_user.contact == @ contact',比較,而不是賦值。 – MBO
您可以使用帶有自定義驗證方法的'before_filter',該方法在任何聯繫人編輯頁面之前被調用。這樣,如果用戶嘗試更改網址,自定義驗證方法仍會被調用。在自定義方法中,你可以檢查'current_user == @ contact'。如果是這樣,請顯示編輯表單,否則重定向回來並顯示錯誤消息。 – Huy