У меня есть простой пользователь: ** Отредактировано немного для ясности и по предложению Сэма
class User < ActiveRecord::Base
# <snip other attribs>
has_many :handles
has_one :active_handle, :class_name => "Handle"
validates_each :active_handle, :allow_nil => true do |record, attr, value|
record.errors.add attr, "is not owned by the correct user" unless record.handles.include?(value)
end
end
И модель ручки:
class Handle < ActiveRecord::Base
belongs_to :user
attr_accessible :user_id
validates :user_id,
:presence => true,
:numericality => true
attr_accessible :name
validates :name,
#etc...
end
Теперь я быхотел бы при настройке ассоциации User.active_handle проверить, что дескриптор принадлежит правильному Handle.user_id.Я пытался сделать это в пользовательской валидации, а также в методе валидации в модели User.В обоих случаях он делает полную противоположность того, что я хочу, он устанавливает user_id дескриптора для пользователя, выполняющего проверку.
Я нахожусь в конце своей веревки, очевидно, я чего-то не понимаю,и Google никуда меня не доставляет, чего у меня еще не было.
ETA: Я также пытался манипулировать ассоциацией has_one с условиями, которые, похоже, тоже не работают ...
has_one :active_handle,
:class_name => "Handle",
:conditions => ['user_id =?', '#{self.id}']