3

我有一个Project模型,我需要测试它billing_address_type是否有效。

class Project < ActiveRecord::Base

  validates :billing_address_type, :inclusion  => { :in => %w(h o) }

  def billing_address_types
    options = {"Home" => "h", "Organisation" => "o"}       
    if person.present?
      options.delete("Home") if person.address.blank?
      options.delete("Organisation") if person.organisation.blank?
    end
    options
  end

然而,这validates条线是错误的。我需要检查方法返回的哈希值是否包含在内billing_address_types

如何仅检查哈希值?

谢谢你的帮助...

4

1 回答 1

3

您可以将lambda或 new传递Proc:in将被动态评估的选项,并使用values从返回的哈希上的方法billing_address_types仅获取哈希值:

validates :billing_address_type, :inclusion  => { :in => lambda { |a| a.class.billing_address_types.values } }

有关详细信息,请参阅文档

于 2012-11-10T22:20:31.590 回答