Sha256: 570608e3d2d81ef8b5c46620c3eb9b5eb58e518f26d7d9226d5227f40c64ceb3
Contents?: true
Size: 1022 Bytes
Versions: 2
Compression:
Stored size: 1022 Bytes
Contents
module Approval module RespondForm class Base include ::ActiveModel::Model attr_accessor :user, :reason, :request def initialize(user:, reason:, request:) @user = user @reason = reason @request = request end with_options presence: true do validates :user validates :reason, length: { maximum: Approval.config.comment_maximum } validates :request end def save return false unless valid? prepare(&:save) end def save! raise ::ActiveRecord::RecordInvalid unless valid? prepare(&:save!) end private def prepare raise NotImplementedError, "you must implement #{self.class}##{__method__}" end def ensure_user_cannot_respond_to_my_request return if Approval.config.permit_to_respond_to_own_request? errors.add(:user, :cannot_respond_to_own_request) if user == request.request_user end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
approval-0.3.3 | lib/approval/models/approval/respond_form/base.rb |
approval-0.3.2 | lib/approval/models/approval/respond_form/base.rb |