T.references usage

While I’m not currently using the whole rails environment, I may utilize
the framework in the future. In the meantime, I’m not clear on the
syntax for establishing a foreign key relationship for an active record
association using “t.references” or “t.belongs_to”:

thufir@ARRAKIS:~/projects/rss2mysql$
thufir@ARRAKIS:~/projects/rss2mysql$ rake migrate
(in /home/thufir/projects/rss2mysql)
== CreateSubscribers: migrating

– create_table(:subscribers)
→ 0.0064s
== CreateSubscribers: migrated (0.0068s)

== PopulateSubscribers: migrating

== PopulateSubscribers: migrated (0.0443s)

== CreateSubscriptions: migrating

– create_table(:subscriptions)
– subscribers()
rake aborted!
An error has occurred, all later migrations canceled:

undefined method `subscribers’ for
#ActiveRecord::ConnectionAdapters::MysqlAdapter:0xb74e78b8
/home/thufir/projects/rss2mysql/rakefile:9
(See full trace by running task with --trace)
thufir@ARRAKIS:~/projects/rss2mysql$
thufir@ARRAKIS:~/projects/rss2mysql$ cat db/migrate/00
0010_create_subscribers.rb 0030_create_subscriptions.rb
0050_create_items.rb
0020_populate_subscribers.rb 0040_populate_subscriptions.rb
0060_create_pages.rb
thufir@ARRAKIS:~/projects/rss2mysql$ cat db/
migrate/0040_populate_subscriptions.rb
class PopulateSubscriptions < ActiveRecord::Migration

class Subscription < ActiveRecord::Base
end

def self.up
s1 = Subscription.create(:subscription => ‘http://groups.google.ca/
group/ruby-talk-google/feed/rss_v2_0_msgs.xml’,:subscriber_id => 1)
s2 = Subscription.create(:subscription => ‘http://www.slashdot.org/
index.rss’,:subscriber_id => 2)
end

def self.down
end

end
thufir@ARRAKIS:~/projects/rss2mysql$
thufir@ARRAKIS:~/projects/rss2mysql$ cat db/
migrate/0030_create_subscriptions.rb
class CreateSubscriptions < ActiveRecord::Migration
def self.up
create_table :subscriptions do |t|
#t.column :subscriber_id, :integer #, :null => false
t.references subscribers
t.column :subscription, :string
end
end

def self.down
drop_table :subscriptions
end
end

thufir@ARRAKIS:~/projects/rss2mysql$

is there an error with migration, or in how it’s used?

thanks,

Thufir

–

You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.

On Mon, Dec 21, 2009 at 9:40 AM, Thufir [email protected] wrote:

While I’m not currently using the whole rails environment, I may utilize
the framework in the future. In the meantime, I’m not clear on the
syntax for establishing a foreign key relationship for an active record
association using “t.references” or “t.belongs_to”:

3 things came to my mind as I read your post…

  1. Upgrade to a later version of Rails. You don’t say what version
    you are using, but the convention of migrations named NNNN_some_name
    changed to YYYYMMDDHHMMSS_some_name about a year(ish) ago when I first
    started learning about Rails.

  2. I wonder if you have a pluralization problem and if yuo should
    change your CreateSubscriptions class to use

    t.references subscriber

instead of

 t.references subscribers.  In general, I have learned that a

“thing” model “has_many :somethings” (note the plural) while the
Something model would “belongs_to :thing” (note the singular).

  1. I also wonder why you commented out the creation of the primary key
    for your Subscriptions table, although that is not likely to be your
    problem.

–wpd

–

You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.

thufir@ARRAKIS:~/projects/rss2mysql$

is there an error with migration, or in how it’s used?

well much like you write t.column :subscriber_id and not t.column
subscriber_id, you need to write t.references :subscribers

Fred

–

You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.