2012-12-19 15 views
8

Users Utwórz Programs. Mogą być śledzone/lubiane przez inne Users. Jednak Program będzie ZAWSZE mieć jednego twórcę.Belongs_to i has_and_belongs_to_many do tej samej tabeli w Railsach

Potrzebuję więc tabeli ProgramsUsers, aby zmapować/podążać. Czy "twórca" również byłby typem relacji w tym zestawieniu, czy też mógłby być pojedynczym, specyficznym ?

Tak w istocie:

Program.rb

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

Jest to dopuszczalne, czy jest to biedny modelowanie?

Odpowiedz

8

Wierzę, że można zrobić coś takiego

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

ten sposób można mieć pole creator_id na stole programs i uzyskać do niego dostęp za pomocą @program.creator. Aha, i przy okazji, to nie jest biedne modelowanie.

+0

Ach, czuję się jak widziałem, że przed, powinien już pamiętał. Właśnie tego chcę. Dzięki! – dewyze

3

coś takiego:

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' 
Powiązane problemy