2015-11-16 60 views
0

用户属于公司和公司has_many用户。在我公司控制器比方说,创建方法,我做的:关联创建事件

company = @current_user.create_company(company_params) 

一旦一家公司被创造了,我希望能够设置用户“user.admin =真”。做这个的最好方式是什么?

我在我的公司控制器中试过以下内容。但公司在org中甚至没有任何用户,甚至是after_commit回调。

class Company < ActiveRecord::Base 
    after_commit :set_creator_as_admin 
    has_many :users 

    private 

    def set_creator_as_admin 
     self.users.first.set_role_admin 
    end 
end 

这是使用对象服务的好时机吗?还有没有一种方法可以让这个工作没有对象服务?

回答

1

由于admin属性属于用户,我们应该通过用户来更新它。 让它简单,我们可以用这样的:

@current_user.build_company(company_params) 
@current_user.admin = true 
@current_user.save! 

公司&使用会更新一次。