Rails - has_many 和 HABTM 模型的新手关联问题

发布于 2024-09-29 15:42:10 字数 536 浏览 6 评论 0 原文

我有三个模型:

class Tenant < ActiveRecord::Base
  has_many :sites
end

class Site < ActiveRecord::Base
  belongs_to :tenant
  has_and_belongs_to_many :users
end

class User < ActiveRecord::Base
  has_and_belongs_to_many :sites
end

对于站点和用户,我有一个连接表(sites_users)。

每个站点有 n 个用户。每个租户有 n 个站点。

要获取特定站点的用户列表,很简单:

t = Tenant.first
s = t.sites.first
s.users

但是我是否可以向租户添加关联以提供该租户下所有站点之间的所有用户列表?这样我就可以做到:

t = Tenant.first
t.users

I have three models:

class Tenant < ActiveRecord::Base
  has_many :sites
end

class Site < ActiveRecord::Base
  belongs_to :tenant
  has_and_belongs_to_many :users
end

class User < ActiveRecord::Base
  has_and_belongs_to_many :sites
end

For Site and Users, I have a join table (sites_users).

Every Site has n Users. Every Tenant has n Sites.

To get a list of users for a specific site, it's easy:

t = Tenant.first
s = t.sites.first
s.users

But is there an association I can add to Tenant to provide a list of all users between all sites under that tenant? So that I can do:

t = Tenant.first
t.users

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

屌丝范 2024-10-06 15:42:10

很多人都要求这样做,您将在 Rails Lighthouse Ticket #8994 nofollow">nested_has_many_through 插件。如果您使用的是 Rails 2.3,则 nested_has_many_through 插件 可能适合您,否则在 Rails 3 中您可以使用可以编写 ARel 查询来查找正确的研究集。

A number of people have asked for this, you'll see some discussion in the Rails Lighthouse Ticket #8994 of some developers trying to merge in the functionality of the nested_has_many_through plugin. If you're on Rails 2.3, the nested_has_many_through plugin might work for you, otherwise in Rails 3 you could write an ARel query to find the right set of studies.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文