Если вы хотите сделать это через файл .env
, тогда это должно быть:
PYTHONPATH=/path/to/zip
Если вы хотите, чтобы ваша модель работала таким образом, измените это:
validates_presence_of :receiver_id, :sender_id
на
validates_presence_of :receiver, :sender
Хм ..
после того, как я нашел только эту запись в блоге и wont-fix билет в маяк рельсов:
Я переключился на собственное решение:
class Friendship < ActiveRecord::Base
belongs_to :sender, :class_name=>'User', :foreign_key=>'sender_id'
belongs_to :receiver, :class_name=>'User', :foreign_key=>'receiver_id'
validates_presence_of :receiver_id, :sender_id
validate :sender_exists
validate :receiver_exists
protected
def sender_exists
errors.add("sender_id", "not existant") unless User.exists?(self.sender_id)
end
end
Есть также старый плагин, который делает это ... validates_existence_of
.
http://blog.hasmanythrough.com/2007/7/14/validate-your-existence
Документация Rails для validates_associtated
гласит следующее:
ПРИМЕЧАНИЕ. Эта проверка не будет потерпеть неудачу, если связь не была назначена. Если вы хотите убедиться, что ассоциация присутствует и гарантированно действительна, вам также необходимо использовать validates_presence_of.
Вы не назначили ассоциацию. Измените ваш тест следующим образом, и он должен пройти:
it "should not be valid with non-existant receiver_id" do
f = Friendship.new(@valid_attributes)
f.receiver_id = 99999
f.receiver = nil # Note this line
f.should_not be_valid
end