Forum: Ruby on Rails Require in models?

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
05748a61a1b05130ec508434301aecf1?d=identicon&s=25 Lee (Guest)
on 2007-01-26 20:29
(Received via mailing list)
I am getting the error "Missing model property.rb" whenever I insert
require statements into my model (in this case property.rb). The error
occurs when I try to access my application through the browser. As soon
as I remove the require, the error no longer occurs.

My code is as follows:

require 'validation'
require 'date'
require 'time_period'
class Property < ActiveRecord::Base

83ca41657a99b65d99889abe712ba5e2?d=identicon&s=25 Jason Roelofs (Guest)
on 2007-01-26 20:44
(Received via mailing list)
You should almost never need to require anything in your model; Rails
includes a ton of libraries for you. Odd error though, not exactly sure
it means.

05748a61a1b05130ec508434301aecf1?d=identicon&s=25 Lee (Guest)
on 2007-01-26 20:58
(Received via mailing list)
It seems that a corrupt file (validation.rb) was causing the problem. I
restored to an older version and the problem went away!

I think I need "require" statements for two reasons:

1. to make use of common code under /lib from within my model
2. to access other methods from within a model that "I" have defined in
other model files

Is this good practice?
87d298ecabf4a78819698a036ce01a1a?d=identicon&s=25 Mark Carey (Guest)
on 2007-01-26 21:00
(Received via mailing list)
You might be overwriting the Rails libraries with those require
Since the libraries you are referencing are already loaded up
you need not require them.

If there were other libraries that needed to be loaded (ie - ones you
you could do so in your environment.rb, then 'include' the libraries in
files you need to access them.

Keep in mind that require looks in the root directory of where the
application is being run from to look for the files to import, that is
you see people using File.dirname(__FILE__) to get the path to the
file instead of the app root.

05748a61a1b05130ec508434301aecf1?d=identicon&s=25 Lee (Guest)
on 2007-01-26 21:07
(Received via mailing list)
So does Rails automatically load the files under /lib and make them
visible within all model files? With the exception of the system
date.rb, both validation.rb and time_period.rb are in the /lib

Also, if I were to define  a method 'x' in my model 'X' and model 'X'
inherits from ActiveRecord, would the method 'x' automatically be
visible to my code in another ActiveRecord model 'Y'? If so, is this
magic by Rails or ActiveRecord?
83ca41657a99b65d99889abe712ba5e2?d=identicon&s=25 Jason Roelofs (Guest)
on 2007-01-26 21:38
(Received via mailing list)
Class in /lib will be automatically require'd by Rails if they follow
following convention:

lib/class_name.rb :
class ClassName

The name of the file must be the underscore version of the name of the
class. If the names differ, then you'll have to require for yourself.

This topic is locked and can not be replied to.