Jeśli mam modelu ActiveRecord następującoRuby ocena klasy, validates_inclusion_of z dynamicznymi danymi
class Foo < ActiveRecord::Base
validates_inclusion_of :value, :in => self.allowed_types
def self.allowed_types
# some code that returns an enumerable
end
end
to nie działa, ponieważ metoda allowed_types nie zostało zdefiniowane w momencie, w którym walidacja jest uwzględniany. Wszystkie poprawki, o których myślę, że w zasadzie wszystkie dotyczą obracania definicji metody powyżej sprawdzania poprawności, tak aby była dostępna w razie potrzeby.
Rozumiem, że może to być raczej pytanie o styl kodowania niż cokolwiek (chcę, aby wszystkie moje walidacje znajdowały się u góry modelu i metod na dole), ale uważam, że powinno to być jakieś rozwiązanie tego problemu, prawdopodobnie z leniwą oceną początkowego obciążenia modelu?
jest tym, co chcę zrobić, nawet jeśli jest to możliwe? Czy powinienem właśnie definiować metodę powyżej sprawdzania poprawności lub czy istnieje lepsze rozwiązanie sprawdzania poprawności w celu osiągnięcia tego, czego chcę.
@eightbitraptor ... spróbuj ': w => Foo.allowed_types' zamiast': w => self.allowed_types' ... beacause myślę 'self' będzie odwołanie do obiektu 'Foo' zamiast' Foo' – rubyprince