rails重定向中的条件验证

时间:2015-02-22 20:17:38

标签: ruby-on-rails ruby forms validation

实施邮政编码验证功能的最佳方法是什么。我不是在谈论邮政编码的格式,而是验证用户输入的邮政编码是您开展业务的地方。例如:https://doughbies.co/

例如:我只发送到邮政编码12345,因此如果用户输入不同的邮政编码,他会收到一条失败的消息,说明"我们没有送到您的地区"但如果用户输入12345,他将被重定向到商店。

我正在考虑使用可接受的邮政编码作为数组中的常量来生成邮政编码模型。然后创建一个可交付成果?将用户输入与数组常量中的一个邮政编码匹配的函数。我不知道可以使用哪种方法或验证。

1 个答案:

答案 0 :(得分:0)

您是否有代表订单的型号?如果是这样,您可以在那里进行验证,而无需单独的模型。

class Order < ActiveRecord::Base
  SHIPPABLE_ZIPS = ['12345']

  validate :zip_shippable

  def zip_shippable
    errors.add(:zip, "cannot be shipped to") unless SHIPPABLE_ZIPS.include?(zip)
  end

end

关于如何在控制器中使用它,请以创建顺序为例:

class OrdersController < ActionController::Base
  def create
    @order = Order.new(order_params) # "order_params" is params from the form
    if @order.save
      redirect orders_path # redirect the user to another page
    else
      render :new # render the form again, this time @order would contain the error message on zip code
    end
  end
end