协会创建了活动

时间:2015-11-16 15:38:25

标签: ruby-on-rails ruby-on-rails-4 activerecord

用户属于公司,公司拥有多个用户。让我们说我的公司控制器创建方法我做:

company = @current_user.create_company(company_params)

创建公司后,我希望能够将用户设置为“user.admin = true”。这样做的最佳方式是什么?

我在公司控制器中尝试过以下操作。但是公司在组织中甚至没有任何用户回调。

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 个答案:

答案 0 :(得分:1)

由于admin属性属于user,我们应该通过user更新它。 简单一点,我们可以这样使用:

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

公司&amp;使用将更新一次。