【发布时间】:2015-07-03 15:28:33
【问题描述】:
我的目标是为用户提供一种发送请求的方式,以便与具有主管角色的用户以及请求访问权限的主管共享记录。所以经过一番调查,我意识到这个设置与社交媒体平台发送好友请求的方式非常相似。但是,对于查看记录,请求将是一面倒的。
用户 A 想与具有管理类型角色的用户 B 共享他的“记录”。
我已经得出结论,这与制作一个名为“请求”的表有关,该表的状态为 [待定,已接受]。也许另一个状态发送?
到目前为止,我想出了
rails g model request user:reference status:string
模型文件
class Request < ActiveRecord::Base
belongs_to :user
belongs_to :student, class_name: 'User', foreign_key: 'user_id'
end
class User < ActiveRecord::Base
...
has_many :students
has_many :requests
has_many :accepted_requests, :class_name => "Request", -> { where(requests: {status: 'accepted'})
has_many :pending_requests, :class_name => "Request", -> { where(requests: {status: 'pending'})
has_many :sent_requests, :class_name => "Request", -> { where(requests: {status: 'sent'})
...
end
Ember CLI 模型(用户)
export default DS.Model.extend({
requests: DS.hasMany('request')
students: DS.hasMany('student', {inverse: true});
});
我找到了一些很好的资源,但不知道如何单方面实施。
Friendship has_many through model with multiple status'
http://railscasts.com/episodes/163-self-referential-association
总的来说我希望导演的用户角色能够查询
User.where(role: 'director', email: 'user@example.com').first.students -> Access to any records of the following users who accepted the request.
然后也访问
@user.pending_requests (owned by user that received the request)
@user.accepted_requests (possibly seen on both sides, so regular users can also delete accepted requests)
@user.sent_requests (owned by user who sent request).
有人指导我进行下一步或缺少部分吗?
【问题讨论】:
标签: ruby-on-rails activerecord ember.js