簡體   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