Я застрял. Попытка добраться до того, что кажется простой проверкой, работает, но я все еще не могу заставить это работать.
Вот настройки:
Модель:
class Course < ActiveRecord::Base
has_many :locations, :dependent => :destroy
accepts_nested_attributes_for :locations, :allow_destroy => true
end
class Location < ActiveRecord::Base
belongs_to :course
validates_presence_of :city,
:message => "City cannot be blank",
:allow_blank => true,
:if => Proc.new {|location| location.nil? || (!location.nil? && location.course.format != 'Live') }
end
Что я хотел бы сделать, так это то, что если для курса выбрано что-либо, НО «Живой», то разрешите сохранение пустого города в таблице местоположений. В противном случае, если для файла course.format установлено значение «Live», выведите ошибку.
Я считаю, что он работал над проверкой, где не было определено местоположение. Но при обновлении курса и изменении формата на «Live» проверка не совсем работает.
В рельсах, как вы всегда ссылаетесь на другой столбец в связанной таблице, как у меня выше? Если это новый курс, то этот курс еще не создан, пока проверяются валидации, так что course.nil? верно.
Заранее спасибо!