在Rails的n到m表中访问其他数据

时间:2019-02-17 13:14:20

标签: ruby-on-rails activerecord

在我的应用中,我有用户和建筑物,并且用户可以属于不同建筑物。我创建了一个用户,建筑物以及它们之间的n到m表。属于建筑物的某些用户可以是管理员。所以我在n到m表中添加了一个admin字段,但是如何访问呢?

create_join_table :buildings, :users do |t|
  # users can belong to many buildings
  t.index [:building_id, :user_id]
  t.index [:user_id, :building_id]
  t.boolean :admin, default: false
end

我想访问管理员字段,以查看用户是否具有管理员角色或普通用户。例如。 user.building.first.admin?

1 个答案:

答案 0 :(得分:1)

如果使用has_and_belongs_to_many,则无法访问联接表。将关联更改为has_many through并创建一个单独的users_buildings表,之后,您可以在用户模型中编写如下内容:

def admin?(building_id)
  users_buildings.find_by(building_id: building_id).admin
end

您可以详细了解guides中的HABTM和has_many through