def delete_multiple
@album = Album.find(params[:albums_ids])
@album.each do |album|
album.destroy
end
flash[:notice] = "#{@album.count} Albums were destroyed"
redirect_to :back
end
tablica albums_ids jest tworzona poprzez zaznaczanie checkboxow
<%= check_box_tag “albums_ids[]”, album.id %>
Chcialbym zeby grupa uzytkownikow mogla usuwac jedynie swoje albumy.
Ability.rb
if user.role? :user
can [:update,:destroy] , Album do |album|
album.user.try(:user) == user
end
Ten kod powoduje ze uzytkownik moze usuwac jedynie swoje albumy ale poprzez akcje destroy. Generalnie jezeli blok w pliku ability.rb zwraca true dana grupa moze uzywac akcji
Tam znajdziesz odpowiedź na nurtujące Cię pytanie. :)[/quote]
ability.rb
can :delete_multiple, Album do |album|
user.album_ids.include?(album.id)
end
<%if can? :delete_multiple, album%>
<label><%= check_box_tag "albums_ids[]", album.id %></label>
<%end%>
Teraz checkboxy pokazuje sie jedynie przy albumach stworzonych przez zalogowanego uzytkownika. Niestety kiedy proboj cos usunac dostaje
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
Oczywiscie bez autoryzacji wszystko usuwa sie poprawnie