[Rails] Re: Adding role's field to users
Hi Walter,
-- Thanks for reply.
On Monday, November 18, 2013 7:03:09 PM UTC, Phillip wrote:
Yes I have added in roles, but perhaps I am doing it wrong? Here is my users controller for creating and updating...
def create
@user = User.new(params[:user].permit(:email, :password, :roles))
# authorize! :manage, @users
respond_to do |format|
if @user.save
format.html { redirect_to(@user, :notice => 'User was successfully created.') }
format.xml { render :xml => @user, :status => :created, :location => @user }
else
format.html { render :action => "new" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
# PUT /users/1
# PUT /users/1.xml
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update(params[:user].permit(:email, :password, :roles))
format.html { redirect_to(@user, :notice => 'User was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
On Monday, November 18, 2013 7:03:09 PM UTC, Phillip wrote:
Hi,(Using Rails 4.0.1, Ruby 1.9.3, latest devise and cancan gems. sqlite db for local development)I am a rookie, setting up website and was adding roles(using cancan gem) to my users table. Everything works great, except when I select a role for a user it is not getting saved. The user gets saved/created OK but it never updates/ remembers any roles assigned to the user.I was following the advice given here(Many roles per user). Any help or advice is most appreciated...Here is my users form...<%= form_for(@user) do |f| %><div class="field"><%= f.label :email %><br /><%= f.text_field :email %></div><% if @current_method == "new" %><div class="field"><%= f.label :password %><br /><%= f.password_field :password %></div><div class="field"><%= f.label :password_confirmation %><br /><%= f.password_field :password_confirmation %></div><% end %><% for role in User::ROLES %><%= check_box_tag "user[roles][#{role}]", role, @user.roles.include?(role), {:name => "user[roles][]"}%><%= label_tag "user_roles_#{role}", role.humanize %><br /><% end %><%= hidden_field_tag "user[roles][]", "" %><div class="actions"><%= f.submit %></div><% end %># /app/model/user.rbclass User < ActiveRecord::BaseROLES = %w[admin blog_author]def roles=(roles)self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.inject(0, :+)enddef rolesROLES.reject do |r|((roles_mask.to_i || 0) & 2**ROLES.index(r)).zero?endenddef is?(role)roles.include?(role.to_s)end# Include default devise modules. Others available are:# :confirmable, :lockable, :timeoutable and :omniauthabledevise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatableend
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/6b9fed85-e8c9-471d-a2ea-b9d223bf33a1%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home