Przestrzeń nazw jak klasa ActiveRecord

Witam szanowne grono!

Mam pewną zagadkę, mam nadzieję, że mogę liczyć na Waszą nieocenioną pomoc!

Posiadam klasę dziedziczącą po ActiveRecord:

Example

/app/models/example.rb

i chciałbym również posiadać przestrzeń nazw o tej samej nazwie:

Example

/app/models/example/other.rb

module Example
class Other

end
end

Czy jest to możliwe? Bo coś nie tak zachowują mi się obiekty ActiveRecordsa z klasą Example… :confused:

Jeśłi już definiujesz klasę Example to nie definiuj modułu Example.

Spróbuj po prostu

class Example::Other end

Dobrze mówi. Wynika to z tego, że Example to nie tyle nazwa klasy/modułu (to też) co przede wszystkim nazwa stałej, która może wskazywać na 1 obiekt w systemie tylko: albo klasę albo moduł.

Jest to możliwe ale dużo z tym problemów jeśli chodzi o railsowy autoloading gdy zagnieżdżasz klase w klasie a nie module. Ja mam taką konwencję na obejście tego, że albo wszystko wrzucam w moduł albo robię klasę Example a moduł Examples.

Sluchaj sie Roberta jezeli nie chcesz przechodzic przez moje problemy :wink: