2012-12-19 13 views
8

Users erstellen Programs. Diese können von anderen Users verfolgt/gemocht werden. Die Program wird jedoch IMMER einen Ersteller haben.Belongs_to und has_and_belongs_to_many zur gleichen Tabelle in Rails

Also brauche ich eine ProgramsUsers Tabelle, um die like/folgen. Würde der "Ersteller" auch als eine Art von Beziehung in diese Tabelle gehen, oder könnte auch eine belongs_to eine einzige spezifische User?

Also im Grunde:

Program.rb

class Program < ActiveRecord::Base 
    has_and_belongs_to_many :users #Likes/Follows 
    belongs_to :user     #Creator 

Ist das akzeptabel oder ist dies eine schlechte Modellierung?

Antwort

8

Ich glaube, Sie so etwas wie diese

class Program < ActiveRecord::Base 
    has_and_belongs_to_many :users #Likes/Follows 
    belongs_to :creator, ::class_name => 'User', :foreign_key => 'creator_id' 

diese Weise tun können, können Sie ein creator_id Feld auf Ihrem programs Tisch, und es @program.creator mit zuzugreifen. Oh, und übrigens, es ist keine schlechte Modellierung.

+0

Ugh, ich fühle mich wie ich das schon gesehen haben, sollte nicht vergessen haben. Genau das möchte ich. Vielen Dank! – dewyze

3

Etwas wie folgt aus:

class Program < ActiveRecord::Base 
    has_many :followings 
    has_many :followers, :class_name => 'User', :through => :followings 
    belongs_to :creator, :class_name => 'User', :foreign_key => 'creator_id' 
Verwandte Themen