![](/img/trans.png)
[英]Migrate Rails table from belongs_to to 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
)通过具有模型然后允许您访问它来工作
HABTM
和HMT
之间的区别基本上是通过模型直接访问。 HABTM可用于“快速而肮脏”的收集访问; HMT可提供更多实质性数据访问
您需要创建一个模型。
class GroupsUsers < ActiveRecord::Base
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.