在我的应用中,我有用户和建筑物,并且用户可以属于不同建筑物。我创建了一个用户,建筑物以及它们之间的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?
答案 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