很難用文字來形容,我寧願向您展示代碼並一起解釋。現在我可以告訴你,我正在使用類似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數組中刪除他,但它也沒有按照我想要的方式工作。我對這個問題有任何建議,並且如果可能的話,我想獲得關於如何在視圖中重寫代碼的一些提示,因爲迭代器中的迭代器(或循環?)對我來說看起來很混亂。