拥有并属于许多人 - 检查其他字段

时间:2014-07-30 16:05:36

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

我有一个用户和雇主模型。用户可以有多个雇主,反之亦然,还有一个标志,表明他们的关系是否有效:

class User < ActiveRecord::Base
  has_and_belongs_to_many :employers

end

class Employer < ActiveRecord::Base
  has_and_belongs_to_many :users
end

和迁移:

class CreateUserEmployers < ActiveRecord::Migration
  def change
    create_table :users_companies do |t|
      t.integer :user_id
      t.integer :employer_id
      t.boolean :is_active
    end
  end
end

如果我有一个用户和他们的雇主之一

test1 = User.find(1).employers.first

如何检查与User's的{​​{1}}关系是否有效(Employer表中的字段is_active)?

1 个答案:

答案 0 :(得分:2)

根据Rails Guides

  

has_and_belongs_to_many关联创建与另一个模型的直接多对多连接,没有中间模型。

如果你想添加is_active布尔字段(或任何其他属性),我建议你使用has_many :through关联。您需要创建第三个模型(即UserEmployerEmployerUser或其他一些模型),您的关联将是:

class User < ActiveRecord::Base
  has_many :employers, through: :user_employers
  has_many :user_employers
end

class Employer < ActiveRecord::Base
  has_many :users, through: :user_employers
  has_many :user_employers
end

class UserEmployer < ActiveRecord::Base
  belongs_to :user
  belongs_to :employer
end