我有兩個模型 -Physician和Patient. 醫生只能向在其帳戶中填寫了電話號碼的患者提供建議,否則應將醫生重定向到編輯患者頁面。下面是我的代碼:
Recommendation_controller.rb 新方法
def new
authorize Recommendation
@registrant = Registrant.find(params[:registrant_id])
@recommendation = Recommendation.new(patient: @registrant)
end
政策
class RecommendationPolicy < ApplicationPolicy
def new?
login.physician?
end
end
class ApplicationPolicy
attr_reader :login, :record
def initialize(login, record)
raise Pundit::NotAuthorizedError, "must be logged in" unless login
@login = login
@record = record
end
end
所以問題是如何將@registrant 物件傳遞給new?策略以檢查該注冊人是否有電話號碼?
uj5u.com熱心網友回復:
我將創建自定義權限RegistrantPolicy以檢查是否允許推薦。
政策:
class RegistrantPolicy < ApplicationPolicy
def recommendation_allowed?
record.phone_number.present?
end
end
并將其recommendation_controller.rb應用于
def new
authorize Recommendation
@registrant = Registrant.find(params[:registrant_id])
authorize @registrant, :recommendation_allowed?
@recommendation = Recommendation.new(patient: @registrant)
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/411419.html
標籤:
