首页 > 解决方案 > 在 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?

标签: ruby-on-railsactiverecord

解决方案


如果您使用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差异的信息


推荐阅读