簡體   English   中英

如何使用Devise on Rails3允許創作者銷毀自己的唱片

[英]How to permit creator to destroy his own record with Devise on Rails3

用戶登錄后,只有創建記錄的用戶才能銷毀自己的記錄。 我應該在下面的代碼中添加什么?

  def destroy

    @topic = Topic.find(params[:id])
    @topic.destroy
    flash[:notice] = "topic deleted!"

  end

您所尋找的並不是真正的設計,而是像CanCan這樣的授權解決方案。

Devise只能對用戶進行身份驗證,並驗證他們是否已登錄並處於活動狀態。 您需要一種確定用戶是否有權刪除此主題的方法。

您當然可以像這樣滾動自己:

  def destroy
    @topic = Topic.find(params[:id])
    if @topic.user_id == current_user.id
      @topic.destroy
      flash[:notice] = "topic deleted!"
    else
      flash[:error] = "not allowed"
    end
  end

(代碼假定您在Topic中建立了一個名為belongs_to :creator, :class_name => :user關聯。但是您明白了。)

但是使用CanCan之類的東西會使您的生活變得更加輕松,並將代碼減少到如下所示:

  def destroy
    @topic = Topic.find(params[:id])
    authorize! :destroy, @topic
    @topic.destroy
    flash[:notice] = "topic deleted!"
  end

像這樣設置您的能力文件(請參閱定義能力 ):

can :manage, Topic, :owner_id => user.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM