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.

Reply via email to