Ciao a tutti,
chiedo un aiuto perché dopo 1 ora che ci provo mi sembro scemo
In un’applicazione Rails3 in cui sto cercando di configurare
Devise+CanCan ho due modelli (User e Role) legati HABTM, vorrei
aggiornare la relazione con i ruoli quando aggiorno un utente. Ho
seguito le decine di guide presenti online, ma non funziona. Sgrunt!
Se, da console, faccio:
@user.role_ids=[1,3]
@user.save
funziona correttamente. Invece:
users_controller.rb
def update
params[:user][:role_ids] ||= []
@user = User.find(params[:id])
@roles = Role.all
if @user.update_attributes(params[:user])
flash[:success] = I18n.t(‘flash.users.success.user_updated’)
redirect_to ‘/users’
else
respond_to do |format|
format.html { render :action => :edit}
end
end
end
views/users/edit.html.erb
<% @roles.each do |role| -%>
<%= check_box_tag “user[role_ids][]”, role.id, @user.role?(role.name)
-%> <%= role.name.camelize -%>
<% end -%>
Non funziona.
Ugualmente, se da console creo un hash uguale a param[:user], ovvero:
“user”=>{
“email”=>“[email protected]”,
“name”=>“Admin”,
“surname”=>“Istrator”,
“role_ids”=>[“1”, “2”] #uguale con “role_ids”=>[1, 2]
}
e lo passo a update_attributes, non funziona.
Ora mi chiedo: devo inserire nel modello qualcosa che mi permetta
l’aggiornamento del modello Role? Nessun howto lo cita e non ho trovato
qualcosa che sembri fare al caso mio… (ho provato
accepts_nested_attributes_for ma niente)
Non funziona perchè Devise o CanCan ci si mettono in mezzo??
Aiuto!
Tommaso