2014-06-18 3 views
0
class Library < ActiveRecord::Base 
  has_many :books 
  validates_associated :books 
end 

Из того, что я понимаю, это гарантирует, что books, связанный с Library являются действительными книгами. То есть. это не позволит связать недопустимую книгу с Library.Вопросов по Rails validates_associated

Вопросы:

1) Имеет ли validates_associated :books также обеспечить, чтобы Library имеет по крайней мере одну книгу? Если нет, как вы это делаете? Все валидаторы, похоже, работают над полями модели, но нет никаких полей модели Library, ссылающихся на books.

2) Что означает, что This validation must not be used on both ends of an association. Doing so will lead to a circular dependency and cause infinite recursion.? Означает ли это, что вы не должны иметь validates_associated :library в модели Book?

ответ

2

Первый вопрос: Нет, это не гарантирует. Для того, чтобы гарантировать, что у вас есть по крайней мере, одну книгу:

validates :books, presence: true 

Второй вопрос: Да, это правильно. Библиотека попытается проверить свою первую книгу, эта книга попытается проверить ее библиотеку, которая, в свою очередь, попытается подтвердить эту же первую книгу ... и так далее.

Для получения дополнительной информации о проверках, ознакомьтесь с Validations Rails Guide.

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