Ruby on rails 为公司注册时的第一个用户设置默认属性

Ruby on rails 为公司注册时的第一个用户设置默认属性,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我试过这个: class CompaniesController < ApplicationController after_action :set_default_role, only: [:create] private def set_default_role @users.role ||= 'admin' end end class CompaniesController

我试过这个:

class CompaniesController < ApplicationController
  after_action :set_default_role, only: [:create]

  private
    def set_default_role
      @users.role ||= 'admin'
    end
end
class CompaniesController
但它并没有将角色分配给用户(在嵌套属性表单中)

更新:

class User < ActiveRecord::Base
  before_create :set_default_role

  belongs_to :company

  def set_default_role
    if Company.user.first
      @user.role ||= 'admin'
    end
  end

end
class用户
我会用以下方法:

class User < ActiveRecord::Base
  before_create :set_default_role

  belongs_to :company

  def set_default_role
    if User.where(:company_id => company.id).empty?
      self.role ||= 'admin'
    end
  end
end
class用户company.id).为空?
self.role | |='admin'
结束
结束
结束

根据与OP的聊天讨论,OP有一个嵌套的表单,在创建一个公司时,只有一个用户被创建。
companyescontroller#create
操作中只需要一项更改:

  def create
    params[:company][:users_attributes]["0"][:role] = "admin"  ## Add this
    @company = Company.new(company_params)

    if @company.save
      redirect_to @company, notice: 'Company was successfully created.'
    else
     render action: 'new'
    end
  end

这应该在模型层完成。请参阅我的更新。我知道用户未定义,但不确定如何将
after_action
限制为仅应用于第一个用户。