Re: Some advice on DB modeling


#1

I have more or less the same problem. I’m trying to build a system where
users can enter their friends. But the solutions seems not to work for
me.

I used same sql:

CREATE TABLE friends (
user_id int(11) NOT NULL default ‘0’,
friend_id int(11) NOT NULL default ‘0’,
KEY user_id (user_id),
KEY friend_id (friend_id),
CONSTRAINT friends_ibfk_1 FOREIGN KEY (user_id) REFERENCES
users (id),
CONSTRAINT friends_ibfk_2 FOREIGN KEY (friend_id) REFERENCES
users (id)
)

My user.rb looks like this:

class User < ActiveRecord::Base
has_and_belongs_to_many :friends, :join_table => ‘friends’,
:class_name => ‘User’, :foreign_key => ‘friend_id’

has_and_belongs_to_many :friends_of, :join_table => ‘friends’,
:class_name => ‘User’, :foreign_key => ‘user_id’,
:association_foreign_key => ‘friend_id’

attr_accessor :new_password
attr_accessor :friends
attr_accessor :friends_of


end

But when I use user.friends or user.friends_of they always return nil
even after I entered some data in the db manually. There are no errors
in the logfile…

Any ideas?

thanks
Frank


#2

On 1/6/06, Frank S. removed_email_address@domain.invalid wrote:

CONSTRAINT `friends_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES

But when I use user.friends or user.friends_of they always return nil
even after I entered some data in the db manually. There are no errors
in the logfile…

Any ideas?

You don’t need attr_accessors for associations. has_many :whatevers
creates the ‘whatevers’ method for you.

P.S. You can do multiple attr_accessors on one line, separated with
commas, if you want.
e.g. attr_accessor :thing1, :thing2, :thing3


#3

Wilson B. wrote:

You don’t need attr_accessors for associations. has_many :whatevers
creates the ‘whatevers’ method for you.

P.S. You can do multiple attr_accessors on one line, separated with
commas, if you want.
e.g. attr_accessor :thing1, :thing2, :thing3

thanks - the accessors where leftovers from a previous try and I forgot
to remove them…

Frank