【问题标题】:List all group folders列出所有组文件夹
【发布时间】:2013-05-08 06:22:37
【问题描述】:

很难用语言来描述,我宁愿给你看代码并解释。现在我可以告诉你,我正在用类似 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

在列表文件夹视图中

<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 数组中删除他,但它也没有按照我想要的方式工作。我对这个问题的任何建议持开放态度,如果可能的话,我想获得一些关于如何重写视图中代码的提示,因为迭代器中的迭代器(或循环?)对我来说看起来很乱。

【问题讨论】:

    标签: ruby-on-rails ruby hints


    【解决方案1】:

    您可以尝试设置一个命名范围并通过它进行检索。

    http://guides.rubyonrails.org/active_record_querying.html#scopes

    【讨论】:

      猜你喜欢
      • 2020-07-02
      • 2018-08-06
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 2023-01-13
      • 2011-05-11
      • 2021-08-12
      • 2016-02-26
      相关资源
      最近更新 更多