的ActiveRecord :: Base.connection.tables
["groups", "groups_users", "members", "questions", "users", "votes", "schema_migrations"]
正如你所知,我有一个名为“groups_users”的表,但我似乎无法访问它。我可以通过 用户 访问“用户”表。我可以通过 群组 访问“群组”表格。但是我究竟如何访问“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
答案 0 :(得分:3)
如果要访问它,您必须为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
您可以阅读差异here
答案 1 :(得分:1)
Vimsha的答案是正确的;我还会与您分享HABTM
vs HMT
的经验:
HABTM仅适用于“不可访问”的数据。 Rails加入 引擎将HABTM视为没有模型,因此您无法直接访问数据。 HMT(
has_many :through
)的工作原理是模型和模型。然后允许你访问它
HABTM
&amp;之间的差异HMT
基本上是通过模型直接访问。 HABTM用于“快速和肮脏”的收集访问; HMT用于更多的资金数据访问
答案 2 :(得分:0)
您需要创建一个模型。
class GroupsUsers < ActiveRecord::Base
end