2011-09-29 76 views
0

我有如下表:軌協會

創建表文件( ID INT AUTO_INCREMENT primary_key 名VARCHAR(255) )

創建表的用戶( ID INT AUTO_INCREMENT primary_key 名VARCHAR(255) )

創建表管理員( 的file_id INT USER_ID INT )

我希望能夠說出文件admin的用戶名。我如何創建一個關聯,以獲得這一個

如果我做的文件has_many:管理員,那麼我可以做file.admins獲取ID和獲得這些管理員的用戶名我將不得不子查詢使用查找。我想避免那一個

回答

0

對於Rails的問題,而不是共享您的數據庫創建表語法,您應該共享您的數據庫遷移(只需打開schema.rb和複製/粘貼)。

看起來你只是有用戶,其中一些人擁有管理員權限。這樣做的更簡單的方法是在用戶模型上只有一個t.boolean :admin, :default => false列。

這種方法的一個很好的好處是,Active Record將爲您提供一個User#admin?方法,在條件和條件(如<%= render 'admin_menu' if @user.admin? %>)中具有高度可讀性。

這也迴避了您在獲取列出的管理員之後獲得用戶名的其他查詢的擔憂。

# app/models/file.rb 
class File < ActiveRecord::Base 
    belongs_to :user 
end 

@files = File.where(:something => true).include(:user) 
@files.map(&:name) #=> ['Bob', 'Cindy', ...] 
+0

實際上,在用戶表中添加管理標誌對我來說不起作用。我有很多文件,每個文件可以有不同的管理員。這就是爲什麼我有一個將file_id與user_id鏈接起來的管理表。 – kiran