[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

About RAILS

Alexandre Brillant

8/15/2008 2:09:00 PM

Hi,

I don't understand one point with Ruby on Rails :

I have the following migration file :
class Personne < ActiveRecord::Migration

def self.up

# Commentaire à enlever si vous avez déjà une table personnes

# drop_table :personnes

create_table( :personnes ) {

|p|

p.string :prenom

p.string :nom

p.string :telephone

p.text :adresse

}

end

def self.down

drop_table :personnes

end

end

-------------------------------------------------

My model is very simple :

class Personne < ActiveRecord::Base

end

------------------------------------------------

In my controller, I put the following code :

class CarnetController < ApplicationController

def voir

# Find all the objet Personne from the table personnes

@personnes = Personne.find(:all)

end

end

And it works, but I don't understand how Rails can know that the classe
Personne should be mapped to the

personnes table. Where it is stored ?



Txa lot !




4 Answers

Phlip

8/15/2008 2:23:00 PM

0

Alexandre Brillant wrote:

> I don't understand one point with Ruby on Rails :

The best place to discuss RoR is here:

http://groups.google.com/group/rubyonr...

This forum is only qualified to discuss Ruby, the language behind Rails, and
many other awesome programs.

> create_table( :personnes ) {
>
> |p|

I don't know what editor you use, but 'script/generate model' should have
created better syntax there. The |p| should be up near the {, as a style thing.
And your editor might have inserted linefeeds when you tried to paste your
source here.

I would scratch this project and use 'script/generate model' to redo the files.

> And it works, but I don't understand how Rails can know that the classe
> Personne should be mapped to the
>
> personnes table. Where it is stored ?

Google for "convention over configuration". Then pity the programmers, using
other platforms, who must edit ~1 Kb of lines of configuration files, just to
stitch things together!

By default, ActiveRecord will read the name of your class, Personne, lower-case
it, personne, and pluralize it: personnes. Then it looks for that table.

It uses a class called Inflector to do this.

However, I suspect you are lucky to use a language that pluralizes with an s. I
don't think the Inflector is smart enough to divine your language and pluralize
with its conventions - if any! Maybe someone on the RoR forum knows how to set
your locale to French, to handle French idioms correctly...

--
Phlip

Alexandre Brillant

8/15/2008 2:38:00 PM

0

Tx philip, I will go to the google forum.

Well for the |p| after this is correct from the syntax point of view,

create_table( ... ) { |p|

or

create_table( ... ) {
|p|

are both ok, I prefer the second one


"Phlip" <phlip2005@gmail.com> a écrit dans le message de news:
ljgpk.17941$xZ.1384@nlpi070.nbdc.sbc.com...
> Alexandre Brillant wrote:
>
>> I don't understand one point with Ruby on Rails :
>
> The best place to discuss RoR is here:
>
> http://groups.google.com/group/rubyonr...
>
> This forum is only qualified to discuss Ruby, the language behind Rails,
> and many other awesome programs.
>
>> create_table( :personnes ) {
>>
>> |p|
>
> I don't know what editor you use, but 'script/generate model' should have
> created better syntax there. The |p| should be up near the {, as a style
> thing. And your editor might have inserted linefeeds when you tried to
> paste your source here.
>
> I would scratch this project and use 'script/generate model' to redo the
> files.
>
>> And it works, but I don't understand how Rails can know that the classe
>> Personne should be mapped to the
>>
>> personnes table. Where it is stored ?
>
> Google for "convention over configuration". Then pity the programmers,
> using other platforms, who must edit ~1 Kb of lines of configuration
> files, just to stitch things together!
>
> By default, ActiveRecord will read the name of your class, Personne,
> lower-case it, personne, and pluralize it: personnes. Then it looks for
> that table.
>
> It uses a class called Inflector to do this.
>
> However, I suspect you are lucky to use a language that pluralizes with an
> s. I don't think the Inflector is smart enough to divine your language and
> pluralize with its conventions - if any! Maybe someone on the RoR forum
> knows how to set your locale to French, to handle French idioms
> correctly...
>
> --
> Phlip


Phlip

8/15/2008 2:53:00 PM

0

Alexandre Brillant wrote:

> are both ok, I prefer the second one

I prefer the output of script/generate model, because it gets so much ready for
you all at once. For example, it also creates matching test suites and fixtures.

Also, you will learn that all languages come with established styles. For
example, "everyone" typically writes a one-liner block with {}, but they write a
multi-line block with do-end.

Knowing why and how people use different Ruby idioms will help you match your
style to your team's style, if any. And it will help you break that style when
you know _why_ you are breaking it.

--
Phlip

Alexandre Brillant

8/15/2008 3:02:00 PM

0

Thank you for the generate model command, I will try it to see the result.

Thank you too for the remark about the multi-lines do end idiom.

:)

"Phlip" <phlip2005@gmail.com> a écrit dans le message de news:
ELgpk.17949$xZ.15102@nlpi070.nbdc.sbc.com...
> Alexandre Brillant wrote:
>
>> are both ok, I prefer the second one
>
> I prefer the output of script/generate model, because it gets so much
> ready for you all at once. For example, it also creates matching test
> suites and fixtures.
>
> Also, you will learn that all languages come with established styles. For
> example, "everyone" typically writes a one-liner block with {}, but they
> write a multi-line block with do-end.
>
> Knowing why and how people use different Ruby idioms will help you match
> your style to your team's style, if any. And it will help you break that
> style when you know _why_ you are breaking it.
>
> --
> Phlip