ruby-on-rails - 在 Rails 的 to m 表中访问附加数据
问题描述
在我的应用程序中,我有用户和建筑物,用户可以是不同建筑物的一部分。我在它们之间创建了一个用户、建筑物和一个 to m 表。属于建筑物的某些用户可以是管理员。所以我在 n to m 表中添加了一个管理字段,但我如何访问它?
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
我想访问 admin 字段,查看用户是否具有管理员角色或正常角色。例如user.building.first.admin?
解决方案
如果您使用has_and_belongs_to_many
. 将关联更改为has_many through
并创建一个单独的users_buildings
表,之后您可以在用户模型中编写如下内容:
def admin?(building_id)
users_buildings.find_by(building_id: building_id).admin
end
您可以阅读更多关于 HABTM 和指南has_many through
差异的信息