2010-09-20 12 views
11

Mam relacji w moim modelu opartego ActiveRecord, który wygląda tak:Ruby on Rails: pytanie o validates_presence_of

belongs_to :foo 

Mój model powinien zawsze foo zdefiniowane w niej, aby była ona ważna. Moje pytanie jest, gdy za pomocą validates_presence się, który z nich jest odpowiedni z nich korzystać:

validates_presence_of :foo 

lub

validates_presence_of :foo_id 

Zakładając tu oczywiście, że foo_id jest odpowiedni klucz obcy, który jest przez domyślnie, jeśli nie zmieniasz klucza powiązania.

Odpowiedz

8

Pierwsza: validates_presence_of :foo (choć myślę, że druga też będzie działać). Ogólnie pomocnicy sprawdzania poprawności Ruby pracują nad nazwami modeli, a nie jawnymi nazwami kolumn. Możesz użyć tego opróczvalidates_associated zarówno do sprawdzania stanu powiązanej jednostki, jak i jej obecności.

1

Można rozważyć validates_associated

To będzie upewnić się, że stowarzyszenie jest ważny.

+0

validates_associated i validates_presence_of wzajemnie się wykluczają, jeśli się nie mylę. Chcę się upewnić, że powiązany obiekt jest częścią modelu. z definicji powinien być ważny sam. – randombits

+0

Musisz użyć zarówno validates_associated, jak i validates_presence_of. Zobacz inny komentarz do łącza do dokumentacji. –

0

Używam validates_presence_of :foo_id. To działa.