繁体   English   中英

rails:从has_and_belongs_to_many关系访问表

[英]rails: accessing table from has_and_belongs_to_many relationship

ActiveRecord :: Base.connection.tables

["groups", "groups_users", "members", "questions", "users", "votes", "schema_migrations"]

如您所知,我有一个名为“ groups_users”的表,但似乎无法访问它。 我可以通过User访问“用户”表。 我可以按访问“组”表。 但是,我究竟该如何访问“ groups_users”? 我努力了:

Groups_Users
Groups_User
GroupsUsers
GroupsUser

我也尝试过单人版的网上论坛。 关于如何访问它的任何想法? 文档编制也会有所帮助。

class Group < ActiveRecord::Base
  has_and_belongs_to_many :users
end

用户

class User < ActiveRecord::Base
  has_and_belongs_to_many :groups
end

如果要访问它,必须为groups_users表定义一个模型

class GroupUser < ActiveRecord::Base
  self.table_name = "groups_users"
  belongs_to :user
  belongs_to :group
end

您也可以像这样定义关联

class Group < ActiveRecord::Base
  has_many :group_users
  has_many :users, :through => :group_users
end


class User< ActiveRecord::Base
  has_many :group_users
  has_many :groups, :through => :group_users
end

您可以在此处了解不同之

Vimsha的答案是正确的。 我还将为您分享我在HABTM vs HMT方面的经验:

仅当您具有“不可访问的”数据时才使用HABTM。 Rails的加入引擎将HABTM视为没有模型,因此您无法直接访问数据。 HMT( has_many :through )通过具有模型然后允许您访问它来工作

HABTMHMT之间的区别基本上是通过模型直接访问。 HABTM可用于“快速而肮脏”的收集访问; HMT可提供更多实质性数据访问

您需要创建一个模型。

class GroupsUsers < ActiveRecord::Base
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM