Monday, November 18, 2013

Re: [Rails] Adding role's field to users

On Nov 18, 2013, at 2:03 PM, Phillip wrote:

> Hi,
>
> (Using Rails 4.0.1, Ruby 1.9.3, latest devise and cancan gems. sqlite db for local development)

Just a guess here -- have you updated your strong parameters declaration in the users_controller to include the roles field?

Walter

>
> 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...
>
> https://github.com/ryanb/cancan/wiki/role-based-authorization
>
> 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.rb
>
> class User < ActiveRecord::Base
>
> ROLES = %w[admin blog_author]
>
> def roles=(roles)
> self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.inject(0, :+)
> end
>
> def roles
> ROLES.reject do |r|
> ((roles_mask.to_i || 0) & 2**ROLES.index(r)).zero?
> end
> end
>
> def is?(role)
> roles.include?(role.to_s)
> end
>
> # Include default devise modules. Others available are:
> # :confirmable, :lockable, :timeoutable and :omniauthable
> devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
> end
>
>
> --
> 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/681b5ccf-1743-4cf3-89e4-495ee057ad31%40googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

--
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/D20BBFE3-9AC6-491D-B843-F442290545A3%40wdstudio.com.
For more options, visit https://groups.google.com/groups/opt_out.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate