這大致就是我:Ruby的新手活動記錄查詢/模型關聯
我有很多企業已經通過角色很多用戶:
class Company < ActiveRecord::Base
has_many :roles, :dependent => :destroy
has_many :users, :through => :roles
end
和許多用戶可必須通過許多公司角色:結合兩者結合起來
class User < ActiveRecord::Base
has_many :roles, :dependent => :destroy
has_many :comapnies, :through => :roles
end
和許多角色:
class Role < ActiveRecord::Base
belongs_to :user
belongs_to :company
end
這裏的想法是,用戶可以通過普通的電子郵件用戶名登錄,然後爲每家公司分配特權。角色有一個user_id和company_id鍵以及一個特權列'user_role'(即guest,user,admin等)。
這裏是ruby-newbie讓我失敗的地方。當我的用戶登錄時,我想查詢他們有權訪問哪些公司,並使用菜單下拉菜單即時切換。所以他們登錄並在'A公司'中活躍,然後他們可以切換到'公司B'。當他們切換company_id存儲在一個會話變量(我已經有了他們的user_id存儲與運作的認證系統)。
什麼是最好的查詢方式?我有一個user_id,我想檢索company_id,company_name,'user_role'等列表,然後使用它來生成一個彈出式列表。
我一直在玩控臺嘗試Role.Company.etc.etc
,但似乎無法弄清楚這一點。當我在PHP/MySQL中這樣做之前,它將是一個複雜的連接查詢。我相信在Rails中我更容易使用它我似乎無法想象它。 任何幫助,將不勝感激。
感謝,
丹
難道你不能做一些像'在current_user.companies'中的公司做一個列表。爲了測試你是否正確地處理了作用域,你可以在'<如果current_user? %>''<%= current_user.companies%>'<% end %>'在您的某個視圖中 – kobaltz 2012-03-18 20:47:20
這當然假設您的身份驗證在登錄時使用current_user。 – kobaltz 2012-03-18 20:48:05
@kobaltz在視圖中觸發SQL查詢是一種糟糕的形式,所以也許會更好地展示如何在操作中檢索公司。 – coreyward 2012-03-18 20:52:34