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

動的に評価されるオプションにlambdaor newProcを渡し、返されたハッシュに対してメソッドを使用して、ハッシュ値のみを取得できます。:invaluesbilling_address_types

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

詳細については、ドキュメントを参照してください。

于 2012-11-10T22:20:31.590 に答える