[英]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.