2012-12-19 16 views
8

Users oluşturmak Programs. Bunlar diğer Users tarafından takip edilebilir/beğenilebilir. Ancak, Program, HER ZAMAN bir içerik oluşturucuya sahip olacak.Benzer_to ve has_and_belongs_to_many aynı tabloya

Bu yüzden/eşleştirmek için bir ProgramsUsers tablosuna ihtiyacım var. "Yaratan" da bu tablodaki bir ilişki türü olarak mı yoksa Program da belongs_to tek bir spesifik User olabilir mi? Yani özünde

:

Program.rb

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

bu kabul edilebilir mi yoksa bu zavallı modelleme nedir?

cevap

8

Bunu

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

Bu yol gibi bir şey yapabilirsiniz inanıyoruz, size programs masada creator_id alan varsa ve @program.creator kullanarak erişebilir. Oh, ve btw, zayıf modelleme değil. Böyle

+0

Ugh, daha önce, hatırladım gerektiğini gördük gibi hissediyorum. Tam olarak istediğim bu. Teşekkürler! – dewyze

3

şey:

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' 
İlgili konular