我正在使用 validates_existence_of gem。它运行良好,除非我想让我的外键为零。
这是我的用户和项目模型。一个项目属于一个用户和一个贡献者(一个贡献者也是一个用户),但是贡献者可以是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 或 trimester_id 字段为空白或无效,则会出现错误。但是对于contributor_id 字段,如果该字段无效,则不会抛出错误。它通过任何一种方式(有效、无效或无)。
我究竟做错了什么?我正在使用 ruby 2.0.0p0 和 rails 3.2.13。