validates_existence_of ジェムを使用しています。外部キーをnilにしたい場合を除いて、うまく機能します。
ユーザーとプロジェクトのモデルは次のとおりです。プロジェクトはユーザーと貢献者 (貢献者はユーザーでもあります) に属していますが、貢献者は nil である可能性があります。
ここに私のユーザーモデルがあります:
class User < ActiveRecord::Base
attr_accessible :first_name, :last_name
has_many :projects, :dependent => :destroy
has_many :user_trimester_statuses, :dependent => :destroy
end
そして、ここに私のプロジェクトモデルがあります:
class Project < ActiveRecord::Base
attr_accessible :added, :amount, :contributor_id, :label, :ref, :trimester_id, :user_id
belongs_to :user
belongs_to :contributor, :class_name => 'User'
belongs_to :trimester
validates :user, :existence => { :both => false }
validates :trimester, :existence => { :both => false }
validates :contributor, :existence => { :allow_nil => true, :both => false }
end
新しいプロジェクトを追加しようとすると、user_id または triester_id フィールドが空白または無効である場合にエラーが発生します。ただし、contributor_id フィールドについては、フィールドが無効な場合でもエラーはスローされません。いずれかの方法 (有効、無効、または nil) を通過します。
私は何を間違っていますか?ruby 2.0.0p0 と rails 3.2.13 を使用しています。