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



我试过这个:

class CompaniesController < ApplicationController
  after_action :set_default_role, only: [:create]
  private
    def set_default_role
      @users.role ||= 'admin'
    end
end

但它并没有将角色分配给用户(以嵌套的属性形式)。

更新:

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

根据与OP的聊天讨论,OP有一个嵌套的表单,在创建一个公司时,会创建一个用户。CompaniesController#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

我会用以下方式来做:

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

最新更新