2013-11-27 57 views
0

我爲骨幹網(演練)http://backbonejs.org/docs/todos.html經典todolist的應用程序的某些部分。我在rails上設置它(使用sqlite數據庫)。我的數據庫目前有一個問題表和一個用戶表。每個問題ID都屬於一個用戶。我如何才能讓創建該問題的用戶有能力銷燬該問題?如何使驗證所以只有用戶在使用其唯一的ID可以訪問應用程序

如果你可以給我如何做一個一般的解釋,那將是一個很大。我不是在尋找特定的代碼示例,我想我可以管理它。如果你知道任何好的鏈接或設置/例如做這樣的事情,我將不勝感激。謝謝!

+0

查看'cancan' - https://github.com/ryanb/cancan – CDub

回答

1

我個人不喜歡慘慘寶石:)(不要問我爲什麼)

我做這個控制器

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 
<% } %> 
0

看看使用CanCan Gem。

這將幫助您爲用戶創建角色,並讓他們做某些部分的某些行爲。它使得將它們拉入HTML erb也非常簡單。

https://github.com/ryanb/cancan

相關問題