0

我通过方法Subscription为 a创建了一个。User.create_subscription(plan_title)

该方法检查是否可以通过方法订阅(不是超额订阅计划或存档订阅).plan_subscribable?(plan)

这个方法要么返回true要么false,但我希望它也能返回一条错误消息,如果false.

我如何以及在哪里实现这些验证错误?

class User

  def plan_subscribable?(plan)
    users_subscribed = Subscription.where(plan_id: plan.id).size

    return false unless users_subscribed <= plan.quantity
    return false unless plan.archived == false
    return true
  end

  def create_subscription(plan_title)
    plan = Plan.where(title: plan_title).first

    if plan_subscribable?(plan)
      Subscription.create(...)
    end
  end

end
4

1 回答 1

2

您可以修改plan_subscribable?以返回包含特定错误消息的布尔值true 字符串:

def plan_subscribable?(plan)
  return 'The number of users cannot be higher than the plan quantity' unless users_subscribed <= plan.quantity
  return 'Archived plans are not subscribable' unless plan.archived == false
  return true
end

然后,评估 from 的返回值是否plan_subscribable?true。如果不是,则该语句隐式为 false,您可以将返回值用作错误消息:

def create_subscription(plan_title)
  plan = Plan.where(title: plan_title).first

  subscribable_or_error = plan_subscribable?(plan)
  if subscribable_or_error === true
    Subscription.create(...)
  else
    error_message = subscribable_or_error
  end
end
于 2013-12-31T03:57:51.583 回答