2013-05-14 83 views
0

很難用文字來形容,我寧願向您展示代碼並一起解釋。現在我可以告訴你,我正在使用類似UNIX的權限系統來編寫應用程序,而且我遇到了一個問題,我不知道如何解決。以下是我與關係的模型。列出所有組文件夾

class Document < ActiveRecord::Base 
attr_accessible :name, :rights 

belongs_to :folder 

validates :folder_id, presence: true 

end 

class Folder < ActiveRecord::Base 
attr_accessible :name, :rights 

belongs_to :user 
has_many :documents, dependent: :destroy 

validates :name, presence: true 
validates :user_id, presence: true 
end 

class User < ActiveRecord::Base 

attr_accessible :name, :email, :password, :password_confirmation, :user_id 
has_many :folders 

has_many :group_users 
has_many :groups, :through => :group_users 

end 

class Group < ActiveRecord::Base 
attr_accessible :name, :owner 

has_many :group_users 
has_many :users, :through => :group_users, dependent: :destroy 

end 

class GroupUser < ActiveRecord::Base 
attr_accessible :group_id, :user_id 

belongs_to :user 
belongs_to :group 

end 

隨着我心中的系統,在組每個用戶應該有權訪問組所有者擁有的所有文件夾(在賬戶未服用權利現在)。這是我試圖列出用戶有權訪問的所有文件夾的方式。

在文件夾控制器

def list_folders 

@user_groups = current_user.groups 

end 

在list_folder鑑於

<table class="table table-striped"> 
<tr> 
<td>Folder name</td> 
<td>Documents</td> 
<td>Actions</td> 
</tr> 
<% for group in @user_groups %> 

<% user = User.find(group.owner)%> 
<% folders = user.folders %> 
<% for folder in folders %> 
<tr> 
<td><%= folder.name %></td> 
<td>#</td> 
<td><%= link_to 'view', folder_path(folder.id) %></td> 
<tr> 
<% end%> 
<% end %> 
</table> 

所以,問題是用代碼,現在,如果用戶自己擁有一組,他的文件夾獲得牽強以及。我不希望發生這種情況,因爲我有其他地方可以觀看和編輯用戶擁有的文件夾。在這裏,我只想帶來他從其他團隊獲得的那些。我試圖以某種方式排除他從查詢中,但沒有成功。然後我試圖從@user_groups數組中刪除他,但它也沒有按照我想要的方式工作。我對這個問題有任何建議,並且如果可能的話,我想獲得關於如何在視圖中重寫代碼的一些提示,因爲迭代器中的迭代器(或循環?)對我來說看起來很混亂。

回答

相關問題