具有has_many关联查询的Rails复杂范围

时间:2019-01-30 17:43:08

标签: sql ruby-on-rails ruby ruby-on-rails-4 polymorphic-associations

我正在尝试实施一个具有两种模式的批准屏幕 建筑物(待批准的建筑物)和批准人。

建筑类看起来像这样

class Building < ApplicationRecord
  has_many :approval, as: :approvable
end

批准者类如下

class Approver < ApplicationRecord
  belongs_to :approvable, polymorphic: true
  scope :rejected, -> { where(approval_status:2) }
  scope :returned, -> { where(approval_status:3) }
  scope :finally_approved, -> { where(approval_status:1).where(user_id: 1) }
end

#pending = 0 , approved = 1, rejected = 2 , returned = 3
#admin user_id = 1 for final approving

基本批准是自下而上进行的,这意味着工作人员需要首先批准,然后最终由管理员批准。

如果员工拒绝/退回该规则很简单,它将被自动标记为退回/拒绝,并且不需要管理员批准

我需要得到的是待定,最终批准(完成),被拒绝(我已经完成)并返回(完成)的建筑物

我可以通过运行此行来获得批准的建筑物

 BuildingApproval.joins(:approval).merge(Approval.finally_approved)

之所以可行,是因为管理员只有在其同事批准后才能批准它,并且同事拒绝/退还的建筑物不会显示给管理员。

获得拒绝并退回非常容易,因为我只需要查找是否批准/退回其中一项批准即可,无论管理员/工作人员是否这样做。

BuildingApproval.joins(:approval).merge(Approval.rejected)

唯一的问题是,在等待批准时,我需要检查管理员批准是否正在等待并且员工没有拒绝/退回。任何帮助将不胜感激!

0 个答案:

没有答案