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.