Nella mia applicazione, solo gli utenti con ruolo di amministratore possono creare nuovi utenti. Nel nuovo modulo utente, ho una casella di selezione per ciascuno dei ruoli disponibili che possono essere assegnati ai nuovi utenti.Rails: puoi passare argomenti al metodo after_create?
Spero di utilizzare il metodo callback after_create per assegnare il ruolo all'utente. Come posso accedere al valore selezionato della casella di selezione nel metodo after_create?
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
flash[:notice] = 'User creation successful.'
format.html { redirect_to @user }
else
format.html { render :action => 'new' }
end
end
end
Nel modello utente che ho:
after_create :assign_roles
def assign_roles
self.has_role! 'owner', self
# self.has_role! params[:role]
end
ricevo un errore perché il modello non sa quale ruolo è.
Sì, quello che vuoi è un "attributo virtuale" per contenere la selezione della casella di controllo. C'è un grande Railscast su questo: http://railscasts.com/episodes/167-more-on-virtual-attributes –