我個人不喜歡慘慘寶石:)(不要問我爲什麼)
我做這個控制器
def destroy
question = load_question
render status: :not_found, nothing: true and return unless question.present?
//destory your question here
end
private
def load_question
Question.where(id: params[:id], user_id: current_user.id).first
end
所以只有CURRENT_USER可以刪除的問題,其他人將得到404(爲什麼不用403?那麼你可以,但我喜歡從用戶隱藏資源,所以他們不知道,如果事情不屬於他們真的存在於系統)
編輯
通常你可能想隱藏UI中的DELETE按鈕。只要你在前端有current_user的對象,就很容易在骨幹中進行操作。你可以在你的模板中做到這一點:(或通過問題模型中的幫助方法)
// <% if (question.belongsTo(App.CurrentUser)) { %>
<% if (question.get('user_id') === App.CurrentUser.id) { %>
//delete button
<% } %>
查看'cancan' - https://github.com/ryanb/cancan – CDub