(Newb alert) One-to-many

Hey! I’m decent at Ruby, but pretty darn new to Rails. Working through
some tutorial stuff, and don’t fully understand what direction to take.
I
want to create a one-to-many association; how do I accomplish this? Do
I
create the association with MySQL (the DB I’m using) first, and then
just
have Rails take advantage of it? Do I use “migration” (which I only
kinda-sorta “get”)? Or is there some other mechanism entirely?

Apologies for how dumb this probably sounds; trying to get the full feel
of
Rails, and there are definitely some places I’m still not quite
understanding the concepts.

Thanks,

-Ken

On Mon, Feb 10, 2014 at 8:50 AM, Ken D’Ambrosio
[email protected] wrote:

I want to create a one-to-many association; how do I accomplish this?

Have you read these?

http://guides.rubyonrails.org/association_basics.html
http://guides.rubyonrails.org/migrations.html

In general you should make changes to your DB through migrations
only, so you can reverse, repeat, insure identical changes are made
to other (deployment) systems, etc.


Hassan S. ------------------------ [email protected]
http://about.me/hassanschroeder
twitter: @hassan

On 10 February 2014 16:50, Ken D’Ambrosio [email protected]
wrote:

Hey! I’m decent at Ruby, but pretty darn new to Rails. Working through
some tutorial stuff, and don’t fully understand what direction to take. I
want to create a one-to-many association; how do I accomplish this?

Work right through a good tutorial such as railstutorial.org (free to
use online) and all the basics (including associations) will become
clear.

Colin

NB: AddFooToPosts would be AddOwnerIdToCats, I just messed up the copy
paste.

On Tue, Feb 11, 2014 at 11:10 AM, James Turley <

Example: an owner has many cats.

In your Cat model, add the line:
belongs_to :owner

in your Owner model, add the line:
has_many :cats

You then need to run a migration on your cats table, to add the foreign
key
for owners, so Rails can build the associations. From the command line:

rails g migration add_owner_id_to_cats owner_id:integer

This should create a migration file (in the /db folder), with something
like the following in it:

class AddFooToPosts < ActiveRecord::Migration
def change
add_column :cats, :owner_id, :integer # ie, table, field name, field
type
end
end

then, run your migration.

rake db:migrate

Thanks to the convention over configuration approach, rails will
automagically work out that owner_id is a foreign key to the owners
table.
from there, you’ll be able to access cats through owners, and owners
through cats:

mog.owner # “Steve”
steve.cats.first # “Mog”

That, of course, is just the tip of the iceberg - you can define all
kinds
of odd relations, and customise them as much as you want.

JT