私はDeviseとCanCanを使用してユーザーとユーザー権利を管理しています。 私が欲しいもの:普通のユーザーはが自分の投稿を更新できるようになります。 最も重要なモデルはアクティビティと呼ばれます。通常のメンバーのために私が持っている能力は、モデルでCanCanとDeviseで自分の投稿を更新させる
:
elsif user.role? :Member
can :read, :all
can :create, :all
can :manage, Activity, :user_id=>user.id
(第3ラインの構文については、ユーリーGoldshtrakhのおかげで)
活動の指標を考慮して、私が持っています:
<% if can? :update, activity %>
<br />
<%= link_to 'Update', edit_activity_path(activity) %>
<% end %>
<% if can? :delete, activity %>
<%= link_to 'Delete', activity, :confirm => 'Really?', :method => :delete %>
<% end %>
これは動作します:活動は、現在のメンバーによって作成された場合にのみ、更新、削除、リンクを示しています。
ただし、メンバーがアクティビティを更新した場合、変更は保存されず、メンバーはアクティビティに返されません。更新が成功した後である必要があります。ここで
が活動コントローラで更新アクションです:
# PUT /activities/1.xml
はデフ
authorize! :update, @activity
@activity = Activity.find(params[:id])
respond_to do |format|
if @activity.update_attributes(params[:activity])
format.html { redirect_to(@activity, :notice => 'Activity was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @activity.errors, :status => :unprocessable_entity }
end
end
エンド
を更新質問です:活動IST正しく更新されないのはなぜ? 私はすべてのアイデアに感謝しています! load_and_authorize_resource
あなたは正しいです!それがうまくいかなかった理由はそのためです。どうもありがとう! –