我有一个用户和雇主模型。用户可以有多个雇主,反之亦然,还有一个标志,表明他们的关系是否有效:
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
)?
答案 0 :(得分:2)
根据Rails Guides:
has_and_belongs_to_many关联创建与另一个模型的直接多对多连接,没有中间模型。
如果你想添加is_active
布尔字段(或任何其他属性),我建议你使用has_many :through
关联。您需要创建第三个模型(即UserEmployer
,EmployerUser
或其他一些模型),您的关联将是:
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