需求就是简单的改变当前角色的权限,但感觉这样做不好,代码有待优化 想问一下大神:rails 针对这些循环删除和添加有什么好的解决办法?has_many 好像 有类似的解决办法可不知道怎么处理 注:(我要循环插入的表结构只有两个列:权限 id:permission_id 和修改当前角色权限的:role_id) 需要优化的代码如下:
def update_permission
per_old_id = [] #修改前角色的所有权限id
per_new_id = [] #修改后的所有权限id
params[:permission_id].each{ |id| per_new_id << id.to_i } #得到最新修改过的权限id
per_old_id = Admin::Role.find(params[:role_id]).permissions.pluck("id") #得到修改之前的权限id
#添加的save(params[:role_id,list])
(per_new_id-per_old_id).each do |id|
Admin::RolePermission.new(:role_id => params[:role_id],:permission_id => id).save
end
#删除的save(params[:role_id,list])
(per_old_id-per_new_id).each do |id|
Admin::RolePermission.find_by_permission_id_and_role_id(id,params[:role_id]).destroy
end
redirect_to :controller => "permissions",:action => "update_permission_by_role"
end