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

时间:2014-04-23 18:10:33

标签: 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 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

2 个答案:

答案 0 :(得分:1)

根据与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

答案 1 :(得分:0)

我会按以下方式进行:

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