2016-06-28 2 views
1

Я в первый раз создаю пользовательскую проверку, так как попытка регулярных проверок ORM не работает. У меня есть модель под названием AdGroup, которая принадлежит к другой модели под названием Car. Я хочу отправить, чтобы пользователь не создавал новую группу объявлений, если они не выбрали автомобиль. Также Автомобиль - это файл.Как я могу проверить связанную модель?

class AdGroup < ActiveRecord::Base 
    belongs_to :car 
    validate :validate_car_id 

    def validate_car_id 
    car = Car.find_by(id: params[:id]) 
    if car.nil? 
     errors.add(:car, "Select a car image") 
    end 
    end 
end 

class Car < ActiveRecord::Base 
    validates :make, :model, :year, presence: true     
    validates :file, presence: true 
    belongs_to :make 
    has_many :ad_groups 

    ... 
end 

Это изображение, которое я пытаюсь выбрать.

+0

Вы должны добавить свое определение модели к вопросу. –

+0

Это полное определение? Здесь вы должны добавить обе модели «AdGroup» и «Car», включая строки, определяющие их связь друг с другом (например, 'has_many' или' own_to'). –

+0

Если вам был полезен ответ, вы должны принять его или проголосовать за него. –

ответ

1

Ваша модель группы объявлений должна быть связана с моделью автомобиля. Модели AdGroup должны иметь линию belongs_to :car, а модель автомобиля - has_many :ad_groups.

Для проверки совместимых моделей вы можете использовать validates_associated производителя ActiveRecord. Обязательно прочитайте документы по ссылке для gotchas.

class AdGroup < ActiveRecord::Base 
    belongs_to :car 

    validates :car, presence: true 
    validates_associated :car 
end 

При использовании validates_associated вы не должны делать пользовательскую проверку.

+0

с validates_associated вам больше не нужна специальная проверка? –

+0

Правильно, я обновил свой ответ. –

Смежные вопросы