【发布时间】:2017-01-07 17:27:35
【问题描述】:
- 如何仅返回用户有权限的项目的索引?
- 如何仅返回用户所在组具有权限的项目的索引?
- 如何仅在用户有权限的情况下返回单个项目?
- 如何仅在用户所在的组有权限的情况下返回单个项目?
注意:我知道可以查询 Item.all,然后遍历数组并仅提取 .has_permissions == User 所在的项目,但这完全忽略了将所有内容都放在图表中的好处,所以不是一个答案。
为了简单起见,假设有 3 个对象:
- 一件物品
- 一个用户
- 一组
典型的图表情况:
(User)<-[:HAS_PERMISSIONS]-(Item)
(Group)<-[:HAS_PERMISSIONS]-(Item)
(Group)-[:HAS_MEMBERS]->(User)
与模型:
class Item
include Neo4j::ActiveNode
property :name, type: String
property :description, type: String
has_many :out, :user_permission_to, type: :PERMISSION_TO, model_class: :User
has_many :out, :group_permission_to, type: :PERMISSION_TO, model_class: :Group
end
class Identity
include Neo4j::ActiveNode
property :username, type: String
has_many :in, :permission_to, type: :PERMISSION_TO, model_class: :Item
has_many :in, :groups, type: :GROUP_MEMBER, model_class: :Group
end
class Group
include Neo4j::ActiveNode
property :group_name, type: String
has_many :in, :permission_to, type: :PERMISSION_TO, model_class: :Item
has_many :out, :members, type: :GROUP_MEMBER, model_class: :User
end
使用简单的控制器:
# GET /items
def index
@items = Item.all
render json: @items
end
# GET /item/1
def show
render json: @item
end
【问题讨论】:
-
你能分享你的模型吗?
-
当然;添加到问题中。
标签: ruby neo4j graph-databases neo4j.rb