I should have fixed the models before posting, but these are the models
that I would have thought would work with the module identifiers set
properly.
It looks like when a model class in a module refers to by class name only,
which I think is supposed to work, it tries to use its fully-qualified
class name as its module instead of its module. Is that a bug or something
I'm doing wrong?
So, basically this is the wierdness:
Loading development environment (Rails 4.0.0.beta)
1.9.3p194 :001 > AssociatedModel
in AssociatedModel, AssociatedModel is AssociatedModel
in SomeModule::ModuleSpecificModel, AssociatedModel is AssociatedModel
NameError: uninitialized constant
SomeModule::ModuleSpecificModel::ModuleSpecificModel
from
/path/to/spike/app/models/some_module/module_specific_model.rb:3:in
`<class:ModuleSpecificModel>'
from
/path/to/spike/app/models/some_module/module_specific_model.rb:1:in `<top
(required)>'
from /path/to/spike/app/models/associated_model.rb:3:in
`<class:AssociatedModel>'
from /path/to/spike/app/models/associated_model.rb:1:in `<top
(required)>'
from (irb):1
from /path/to/github/rails/railties/lib/rails/commands/console.rb:78:in
`start'
from /path/to/github/rails/railties/lib/rails/commands/console.rb:9:in
`start'
from /path/to/github/rails/railties/lib/rails/commands.rb:47:in `<top
(required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
$ find app/models -exec more {} \;
app/models is a directory
class AssociatedModel < ActiveRecord::Base
puts "in #{self.name}, AssociatedModel is #{AssociatedModel.name}"
puts "in #{self.name}, ModuleSpecificModel is
#{SomeModule::ModuleSpecificModel.name}"
puts "in #{self.name}, MyModel is #{MyModel.name}"
puts "in #{self.name}, RootOnlyModel is #{RootOnlyModel.name}"
end
class MyModel < ActiveRecord::Base
puts "in #{self.name}, AssociatedModel is #{AssociatedModel.name}"
puts "in #{self.name}, ModuleSpecificModel is
#{SomeModule::ModuleSpecificModel.name}"
puts "in #{self.name}, MyModel is #{MyModel.name}"
puts "in #{self.name}, RootOnlyModel is #{RootOnlyModel.name}"
end
class RootOnlyModel < ActiveRecord::Base
puts "in #{self.name}, AssociatedModel is #{AssociatedModel.name}"
puts "in #{self.name}, ModuleSpecificModel is
#{SomeModule::ModuleSpecificModel.name}"
puts "in #{self.name}, MyModel is #{MyModel.name}"
puts "in #{self.name}, RootOnlyModel is #{RootOnlyModel.name}"
end
app/models/some_module is a directory
class SomeModule::AssociatedModel < ActiveRecord::Base
puts "in #{self.name}, AssociatedModel is #{AssociatedModel.name}"
puts "in #{self.name}, ModuleSpecificModel is #{ModuleSpecificModel.name}"
puts "in #{self.name}, MyModel is #{MyModel.name}"
puts "in #{self.name}, RootOnlyModel is #{RootOnlyModel.name}"
end
class SomeModule::ModuleSpecificModel < ActiveRecord::Base
puts "in #{self.name}, AssociatedModel is #{AssociatedModel.name}"
puts "in #{self.name}, ModuleSpecificModel is #{ModuleSpecificModel.name}"
puts "in #{self.name}, MyModel is #{MyModel.name}"
puts "in #{self.name}, RootOnlyModel is #{RootOnlyModel.name}"
end
class SomeModule::MyModel < ActiveRecord::Base
puts "in #{self.name}, AssociatedModel is #{AssociatedModel.name}"
puts "in #{self.name}, ModuleSpecificModel is #{ModuleSpecificModel.name}"
puts "in #{self.name}, MyModel is #{MyModel.name}"
puts "in #{self.name}, RootOnlyModel is #{RootOnlyModel.name}"
end
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Core" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/rubyonrails-core/-/fffscO5K_TUJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en.