在注册时将用户分配给公司

时间:2016-12-21 18:13:23

标签: ruby-on-rails ruby activerecord

我们说我有一个用户模型:

    class User
      has_secure_password
      belongs_to :company, required: true
    end

公司模特:

    class Company
      has_many :users, dependent: :destroy
    end

我想创建一个将用户分配给公司的表单,如果我的应用程序没有该公司名称的记录,则可以是新表单,或者是预先存在的公司。

这是我到目前为止所做的,但我确信有干燥方法......

    class UsersController
      def create
        user = User.new(user_params)
        user.company = Company.find_by_name(params['company']) || Comapny.create(name: params['company'])
        if user.save
          redirect_to root_path
        else
          redirect_to singup_path
        end
      end
    end

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用first_or_create

user.company = Company.where(name: params['company']).first_or_create

......这基本上就是它在锡上所说的。