我正在使用关注根据状态显示记录。如果您已登录,则可以看到未批准的记录,公众只能查看已批准的记录。
module Approved
extend ActiveSupport::Concern
included do
if User.current && !User.current.nil?
scope :approved, -> { where("#{self.table_name}.status_id IN (1,2,3)") }
else
scope :approved, -> { where("#{self.table_name}.status_id IN (1)") }
end
end
end
我正在使用Thread来设置当前用户。
def self.current=(user)
Thread.current[:current_user] = user
end
def self.current
Thread.current[:current_user]
end
在application_controller中我有一个before_action调用set_current_user。
def set_current_user
User.current = current_user
end
当我注销未经批准的记录时,仍会从查询中提取。它似乎跳过了这个问题。
答案 0 :(得分:1)
included
在被收录时被激怒。
试试这个:
included do
scope :approved, -> {
ids = User.current.present? ? "(1,2,3)" : "(1)"
where("#{self.table_name}.status_id IN #{ids}")
}
end