我有一个 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
返回的散列值是否包含在内。
如何只检查哈希值?
感谢您的帮助...
最佳答案
你可以通过 lambda
或新的 Proc
到将被动态评估的 :in
选项,并使用 values
从 billing_address_types
返回的散列上的方法仅获取散列值:
validates :billing_address_type, :inclusion => { :in => lambda { |a| a.class.billing_address_types.values } }
参见 documentation了解详情。
关于ruby-on-rails - 如何检查值是否包含在 ActiveRecord 验证的散列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13325813/