Я видел много вопросов, спрашивающих, как проверить наличие ассоциации, но этот вопрос немного сложнее.
Скажем, у меня есть три модели: Plane
, Pilot
и Flight
.
A Plane
может иметь один Pilot
и один Flight
.
Как только Plane
был присвоен Pilot
, ему можно присвоить Flight
.
Я хотел бы написать некоторый проверочный код, чтобы гарантировать, что если Plane
имеет и Flight
, и Pilot
, Pilot
не может быть изменено. Так что я хотел бы этого пройти тест:
describe Plane do
context "before updating" do
it "ensures that the pilot cannot be changed if the plane has any flights" do
plane = Plane.create!
plane.pilot = Pilot.create!
plane.flight = Flight.create!
hijacker = Pilot.create!
plane.pilot = hijacker
plane.save.should be_false
plane.errors[:base].should include "Can't change the pilot while in-flight"
end
end
end
Мне бы хотелось немного понять, какие методы доступны для достижения этой цели. Спасибо всем!