我试过了:
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
答案 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