(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?

Active Record Associations — Ruby on Rails Guides
Active Record Migrations — Ruby on Rails Guides

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]

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