我试过这个:
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