Scaffold leads to OK database, but model empty

Hi,

I ran:
ruby script/generate scaffold Csv filename:string created:date
modified:date imported:date
rake db:migrate
sqlite3 db\development.sqlite3
    .dump csvs (database columns displayed as expected)
type app\models\csv.rb (which displayed only:
    class Csv < ActiveRecord::Base
    end
with no field names)

I'm inclined to just populate the latter with:
    @filename, @created, @modified, @imported

Is this the way to go, or is there some "Ruby Way"?

I'm running:
ruby 1.8.6
Rails 2.2.1

Thanks in Advance,
Richard

ActiveRecord automatically discovers the fields in your model's table
and creates accessor methods for you at runtime, so the model shown is
all you need.

--Jeremy

ActiveRecord automatically discovers the fields in your model's table
and creates accessor methods for you at runtime, so the model shown is
all you need.

Exactly, and

ruby script/generate scaffold Csv filename:string created:date
modified:date imported:date

..probably worth mentioning that you can easily confirm something
like this by opening your Rails console and entering e.g.
   @csv = Csv.new
and viewing the output.

FWIW,

Hi Jeremy,

... so the model shown is all you need.

Thanks. I was hoping I'd discover something of "The Rails Way".

Best wishes
Richard

Hi Hassan,

... opening your Rails console and ...

Excellent addition. It’s so much better to have proof than relying on
faith.! Just to prove your effort wasn’t wasted on me:

K:\_Projects\Ruby\_Rails_Apps\PayrollSysAnew>ruby script/console
Loading development environment (Rails 2.2.0)

@csv = Csv.new

=> #<Csv id: nil, filename: nil, created: nil, modified: nil,
imported: nil, created_at: nil, updated_at: nil>

Many thanks,
Richard

@csv = Csv.new

=> #<Csv id: nil, filename: nil, created: nil, modified: nil,
imported: nil, created_at: nil, updated_at: nil>

One other thing that might be noteworthy...

Notice how your "created" and "modified" attributes are redundant with
"created_at" and "modified_at." You might want to consider using the
ones provided by Rails by default. This way you have no additional work
in updating these standard fields. Rails with take care of them for you.

Then you also have the "imported" attribute. Since this is also a date
field you might want to follow the Rails convention for naming date and
time fields by appending "_at" or "_on" so you could have "imported_on"
if you want a date only or "imported_at" if you want to also record the
time along with the date.

Also note that the default attributes added by "t.timestamps" in your
migration will use date and time, but you can always format your view to
show date only if you want. And, of course, you will need to update the
value of "imported_at" yourself since it not something Rails can do
automatically.

Hi Robert,

Thanks for looking carefully at my approach. I value your warning
that my names for the date fields I defined may be redundant.

Notice how your "created" and "modified" attributes are redundant with "created_at" and "modified_at."

Every Csv instance is intended to record attributes of a file
discovered in public\data\csv directory. So the "created" field will
record the date the file in question was created. The created_at
attribute will record the data the instance (and thus the
corresponding database record) was created. So I believe they are two
different date values.

As far as the date format is concerned, I plan to use (for example)
File.new(filename).ctime.strftime(pattern) in view.

Does that make sense, or do you think I am confused in this
perception? Please let me know.

Best wishes,
Richard