Adding a new class

If I want to add a class so I can create instances of that class in a
controller, where do I put the code to create the class?

There. I said it. It's embarrassing to admit that I don't know the
answer to that question and it illustrates my poor understanding of
the overall RoR framework structure. So, if anyone can also point me
to something I could read that would enlighten me on the overall RoR
framework structure, I would be appreciative of that as well.

Thanks for any input.

         ... doug

doug wrote:

If I want to add a class so I can create instances of that class in a
controller, where do I put the code to create the class?

If the class is not an ActiveRecord model, then place it in a file in
the application's "lib" directory. The filename should be the
lower-cased version of the class name with words separated by
underscores (MyClass => lib/my_class.rb). When you access "MyClass",
Rails will automatically know how to find the definition and load it in.

I'm not entirely sure I've understood the question, but if you class
is called Foo, then it should live in app/models/foo.rb
You can then call Foo.create or Foo.new from anywhere you want. If you
want your own methods for creating new instance you could write

class Foo < ActiveRecord::Base
  def self.make_me_a_new_one
    .....
  end
end

and then call Foo.make_me_a_new_one from anywhere you want.

Fred

That works, but I prefer to separate models and new classes.

I usually put extra classes in "extras/" and then uncomment the
following in environment.rb:

   # Add additional load paths for your own custom dirs
   config.load_paths += %W( #{RAILS_ROOT}/extras )

That way my new classes and the database-derived models are not
intermixed. It's up to you, really. You can use lib, or extras, so
long as rails can see it and your project makes sense to you and your
team.

-john