Forum: Ruby on Rails 2 questions about generate scaffold

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Shawn B. (Guest)
on 2007-02-08 20:28
(Received via mailing list)
i know this may be easy, but i cant find how to do this.

i have a table called status_def
i want to generate a scaffold for it, but it will not let me create
one because (i think) the table name is not plural.

is there a command line option to script/generate that will allow me
to create a scaffold if the table is not plural ?

btw - all my other tables obey conventions nice, but too much code
will have to be re-written to change the name of this table.

next question.
one of the fields in the status_def table is oem. if i generate a
scaffold for this table, can i put something in the model that will
only allow records of oem = 'somecompany' to be selected ?

thanks for any tips
askegg (Guest)
on 2007-02-09 03:25
(Received via mailing list)
On Feb 9, 5:28 am, "nephish" <removed_email_address@domain.invalid> wrote:
> will have to be re-written to change the name of this table.
>
> next question.
> one of the fields in the status_def table is oem. if i generate a
> scaffold for this table, can i put something in the model that will
> only allow records of oem = 'somecompany' to be selected ?
>
> thanks for any tips

I think this is not really a problem with the scaffold but the model,
which will be pluralised by default.

Once you have generated your scaffold, edit the /app/models/
status_def.rb file to :

class StatusDef< ActiveRecord::Base
    set_table_name "status_def"
  end

I don't know the answer to your second question, but it implies there
is a related company.  If this is the case you could use the ID of the
company when selecting from status_def.  Maybe use act_as_list, or
scope would be useful here?
Shawn B. (Guest)
on 2007-02-09 06:36
(Received via mailing list)
On Feb 8, 7:24 pm, "askegg" <removed_email_address@domain.invalid> wrote:
> > is there a command line option to script/generate that will allow me
> > thanks for any tips
>
> I don't know the answer to your second question, but it implies there
> is a related company.  If this is the case you could use the ID of the
> company when selecting from status_def.  Maybe use act_as_list, or
> scope would be useful here?

ok, well the reason i asked was because when i did the script/generate
scaffold status_def it spit out this
Before updating scaffolding from new DB schema, try creating a table
for your model (StatusDef)
and i do have the table in the database .
weird.

thanks, i found another way around the second question
sk
askegg (Guest)
on 2007-02-09 07:09
(Received via mailing list)
On Feb 9, 3:36 pm, "nephish" <removed_email_address@domain.invalid> wrote:
> > > one because (i think) the table name is not plural.
> > > only allow records of oem = 'somecompany' to be selected ?
> >     set_table_name "status_def"
> for your model (StatusDef)
> and i do have the table in the database .
> weird.
>
> thanks, i found another way around the second question
> sk

Ahh, opps, yes.  The scaffold it built from the model, which is in
that naming format.
I know the capitals are a requirement of Ruby, but I am not sure about
the removal of underscores - probably convention again :)

Rails will pluralise the model name to guess the table name, so:

./script/generate scaffold status_def
  model = StatusDef
  DB table = statusdefs   <- wrong in this case.

There does not seem to be a switch on generate to override this
behaviour, so you need to do it in three steps (punishment for going
outside the conventions) :

./script/generate model status_def
  model = StatusDef

Edit the /app/models/status_def.rb file, add:
  set_table_name "status_def"

./script/generate scaffold status_def
Shawn B. (Guest)
on 2007-02-09 07:20
(Received via mailing list)
On Feb 8, 11:09 pm, "askegg" <removed_email_address@domain.invalid> wrote:
> > > > i have a table called status_def
> > > > one of the fields in the status_def table is oem. if i generate a
>
> > scaffold status_def it spit out this
> I know the capitals are a requirement of Ruby, but I am not sure about
> outside the conventions) :
>
> ./script/generate model status_def
>   model = StatusDef
>
> Edit the /app/models/status_def.rb file, add:
>   set_table_name "status_def"
>
> ./script/generate scaffold status_def

thanks for the help, this table stands alone, no has_many, has_one,
hmbtm, etc... just all alone and a scaffold does all the CRUD i need.
i appreciate your help. Really, i was good on the other tables, really
i was, i even have the book ! don't know what i was thinking still,
but i am all up and running now.
thanks again
This topic is locked and can not be replied to.