Belongs_to和has_and_belongs_to_many到Rails中的同一个表

时间:2012-12-19 19:44:18

标签: ruby-on-rails activerecord

Users创建Programs。其他Users可以跟随/喜欢这些。但是,Program总是会有一个创建者。

所以我需要一个ProgramsUsers表来映射like / follow。 “创作者”也会在该表格中作为一种关系,还是Programbelongs_to一个特定的User

所以实质上:

Program.rb

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

这是可接受的还是这种糟糕的建模?

2 个答案:

答案 0 :(得分:8)

我相信你可以做这样的事情

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

这样,您可以在creator_id表格中添加programs字段,然后使用@program.creator访问该字段。哦,顺便说一句,这不是很糟糕的建模。

答案 1 :(得分:3)

这样的事情:

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'