Ruby 在 Rails - 将视图 and/or 编辑分配给不同的用户(在同一团队中)
Ruby on Rails - Assign View and/or edit to different users (in same team)
在我的应用程序中我有模型 Team
User
Post
.
class User < ActiveRecord::Base
has_many :posts
belongs_to :team
class Team < ActiveRecord::Base
has_many :users
class Post < ActiveRecord::Base
belongs_to :user
在我的 _form.html.haml
我有这部分:
- User.where(team_id: current_user.team_id).each do |user|
%p=user.name
显示同一团队中的所有用户。
当一个用户(在同一个团队中)写了一个post
。我希望他们能够分配可以 Edit and/or View post.
的用户
这意味着用户可以将一些用户分配给仅查看,而一些用户分配给查看和编辑.
我该怎么做,最好的方法是什么?
您可以创建实例方法并使用它
class User < ActiveRecord::Base
has_many :posts
belongs_to :team
def team_members
User.where(team_id: team_id)
# If you dont want current_user/self in the result you can use
# User.where(team_id: team_id).where.not(id: id)
end
end
现在您可以使用它了
- current_user.team_members.each do |user|
此外,您可以在下拉菜单中使用它
= f.collection_select :user_id, current_user.team_members, :id, :name
问。如何将 post 的查看 and/or 编辑和查看分配给同一团队中的每个用户?
一个。您可以查看当前用户是否属于post作者
的团队
类似
- @posts.each do |post|
- if post.user.team_members.include?(current_user)
= link_to "Edit", edit_post_path(post)
我会创建另一个模型,可能如下所示:
class Permission < ActiveRecord::Base
belongs_to :post
belongs_to :user
class User < ActiveRecord::Base
has_many :posts
has_many :permissions
belongs_to :team
class Team < ActiveRecord::Base
has_many :users
class Post < ActiveRecord::Base
has_many: permissions
belongs_to :user
权限模型可能包含 "id"、"post_id"、"user_id"、"editable" 和 "viewable" 等字段(最后 2 个字段为布尔值)。提交时,您可以创建与用户为 post 选择的权限角色一样多的权限角色。如果@user.post.permission == post.user_id && @user.permission.editable,您将只允许人们编辑?两者都返回 true(或类似的东西,不确定你的应用程序的其余部分是如何设置的)
在我的应用程序中我有模型 Team
User
Post
.
class User < ActiveRecord::Base
has_many :posts
belongs_to :team
class Team < ActiveRecord::Base
has_many :users
class Post < ActiveRecord::Base
belongs_to :user
在我的 _form.html.haml
我有这部分:
- User.where(team_id: current_user.team_id).each do |user|
%p=user.name
显示同一团队中的所有用户。
当一个用户(在同一个团队中)写了一个post
。我希望他们能够分配可以 Edit and/or View post.
这意味着用户可以将一些用户分配给仅查看,而一些用户分配给查看和编辑.
我该怎么做,最好的方法是什么?
您可以创建实例方法并使用它
class User < ActiveRecord::Base
has_many :posts
belongs_to :team
def team_members
User.where(team_id: team_id)
# If you dont want current_user/self in the result you can use
# User.where(team_id: team_id).where.not(id: id)
end
end
现在您可以使用它了
- current_user.team_members.each do |user|
此外,您可以在下拉菜单中使用它
= f.collection_select :user_id, current_user.team_members, :id, :name
问。如何将 post 的查看 and/or 编辑和查看分配给同一团队中的每个用户?
一个。您可以查看当前用户是否属于post作者
的团队类似
- @posts.each do |post|
- if post.user.team_members.include?(current_user)
= link_to "Edit", edit_post_path(post)
我会创建另一个模型,可能如下所示:
class Permission < ActiveRecord::Base
belongs_to :post
belongs_to :user
class User < ActiveRecord::Base
has_many :posts
has_many :permissions
belongs_to :team
class Team < ActiveRecord::Base
has_many :users
class Post < ActiveRecord::Base
has_many: permissions
belongs_to :user
权限模型可能包含 "id"、"post_id"、"user_id"、"editable" 和 "viewable" 等字段(最后 2 个字段为布尔值)。提交时,您可以创建与用户为 post 选择的权限角色一样多的权限角色。如果@user.post.permission == post.user_id && @user.permission.editable,您将只允许人们编辑?两者都返回 true(或类似的东西,不确定你的应用程序的其余部分是如何设置的)