ruby-on-rails - rails 3,如何在组中设置 user.role#create 操作

标签 ruby-on-rails ruby-on-rails-3 devise

我有一个 groups#new看法。当 current_user 登录时,他们被允许创建一个组。

我的 Groups#new View :当前用户的隐藏字段工作正常,但我需要将角色 = groupleader 分配给当前用户。

<div>
  <%= fields_for :membership do   %>
    <%= hidden_field_tag "user_id", current_user.id %>
    <%= hidden_field_tag "role", "groupleader" %>
  <% end %>
</div>
<div class="field">
  <%= f.label :title %><br />
  <%= f.text_field :title %>
</div>
<div class="field">
  <%= f.label :description %><br />
  <%= f.text_area :description %>
</div>
<div class="actions">
  <%= f.submit %>
</div>
<% end %>

然后在我的组#create 操作中:
def create
  @group = Group.new(params[:group])
  @membership = current_user.memberships.build(:group_id => params[:group_id])

这是建立成员(member)资格但不影响角色。

我的模型如下:
class Group < ActiveRecord::Base
  has_many :memberships, :dependent => :destroy
  has_many :users, :through => :memberships  
  accepts_nested_attributes_for :users

class User < ActiveRecord::Base #Built with Devise Gem
  has_and_belongs_to_many :roles
  has_many :memberships, :dependent => :destroy
  has_many :groups, :through => :memberships


class Membership < ActiveRecord::Base
  attr_accessible :user_id, :group_id
  belongs_to :user
  belongs_to :group 
end


class Role < ActiveRecord::Base
  has_and_belongs_to_many :users
end

- -编辑
这是我正在玩的......因为我通过表单发送角色参数,
@membership = current_user.memberships.build(:group_id => params[:group_id], :role => params[:role])

这是通过日志的内容:
 Parameters: {"group"=>{"title"=>"Test group w/leader", "description"=>"test"}, "commit"=>"Create Group", "role"=>"groupleader", "authenticity_token"=>"+GCK8bJddObwKdCoiqI5QzlGRyuci8b5JxmgXbOjgsc=", "utf8"=>"✓", "user_id"=>"8"}
 User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 8 LIMIT 1
WARNING: Can't mass-assign protected attributes: role

显然,我有一个批量分配问题。

最佳答案

您的成员模型没有 groupleader 的 attr_accessible。这不能是我为什么它不起作用的原因。

我也建议将其命名为 group_leader_id

关于ruby-on-rails - rails 3,如何在组中设置 user.role#create 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7787022/

相关文章:

ruby-on-rails - capybara 测试中的 stub 时间

Jquery token 输入 : Turning a belongs_to select menu into the token field

html - 想要在提交和页面重新加载后保留选定的 html 选项

validation - 验证 :inclusion in rails based on parent Model's attribute value

ruby-on-rails - Rails 设计身份验证,外部应用程序请求被阻止

ruby-on-rails - 如何使用渲染 json : with active-model-serializers gem?

ruby-on-rails - 通过 Gmail API 回复发送的电子邮件

ruby-on-rails - 我在尝试运行 cucumber 测试时遇到错误,该测试使用 selenium-webdriver 操作确认对话框

ruby-on-rails - 将密码重置发送到其他电子邮件 - Devise

ruby-on-rails - Devise 破坏了我所有的测试 - ActiveRecord::RecordNotUnique PG::Error