Mam dwa powiązane modele - powiedzmy Activity
i Step
. Activity has_many :steps
i Step belongs_to :activity
co oznacza, że tabela dla steps
ma kolumnę activity_id
.Zapobieganie zmianie jednego pola w modelu szyny
To jest w wersji Hobo 1.3, więc Rails 3.0.
To, czego chcę, to zagwarantowanie, że po utworzenie nie można przenieść kroku do innego Activity
. Nie chcemy zmieniać pola activity_id
.
Usunąłem pole z formularzy edycji, ale szukam silniejszego ograniczenia. Zasadniczo chcę sprawdzić na update
(nie na create
), że kolumna nie jest dotykany. Dokumentacja Hobo nie sugeruje niczego podobnego w Hobo, więc patrzę na Rails validations, ale do tej pory nie znalazłem ograniczenia "tylko rób to w aktualizacji", które pamiętam, ani potwierdzenia, że coś nie jest wymiana pieniędzy.
'attr_readonly' działa jak w reklamie, b ut może powodować marszczenie z innym aspektem aplikacji. Wypróbuję podejście walidacyjne jutro i zobaczę, czy to działa lepiej. – pjmorse
Jeśli naprawdę potrzebujesz zmienić identyfikator gdzieś indziej w swojej aplikacji, możesz to zrobić nawet z podejściem sprawdzania poprawności z następującymi: 'step.save (: validate => false)' – Deradon
To nie jest kwestia zmian gdzie indziej; to kopia obiektu. (Więc, powiedzmy, hipotetycznie skopiowaliśmy "Czynność" w sposób, który również skopiował wszystkie "Kroki", z jakiegoś powodu, który nie działa, a jeszcze nie zagrzebałem się wystarczająco głęboko w kodzie, aby zrozumieć, czy ta zmiana go złamała .) – pjmorse