Rails:你可以将参数传递给after_create方法吗?

Bra*_*axo 6 activerecord ruby-on-rails

在我的应用程序中,只有具有管理员角色的用户才可以创建新用户.在新用户表单中,我为可能分配给新用户的每个可用角色都有一个选择框.

我希望使用after_create回调方法将角色分配给用户.如何在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
Run Code Online (Sandbox Code Playgroud)

在用户模型中,我有:

  after_create :assign_roles

  def assign_roles
    self.has_role! 'owner', self
    # self.has_role! params[:role]
  end
Run Code Online (Sandbox Code Playgroud)

我收到错误,因为模型不知道是什么角色.

ben*_*sie 15

您可以使用attr_accessor创建虚拟属性并将该属性设置为创建操作的一部分.

  • 是的,您想要的是包含复选框选择的“虚拟属性”。有一个很棒的 Railscast:http://railscasts.com/episodes/167-more-on-virtual-attributes (2认同)