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
限制为仅应用于第一个用户。