Rails中的Belongs_to和Has_and_belongs_to_many如何关联同一张表?

9

用户创建程序。这些程序可以被其他用户关注/点赞。然而,程序始终只有一个创建者。

因此,我需要一个ProgramsUsers表来映射关注/点赞。该“创建者”是否也会作为该表中的一种关系类型,或者一个程序还可以属于一个特定的用户

因此,本质上:

Program.rb

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

这是否可接受或者这是否建模不佳?
2个回答

8
我相信您可以做类似于这样的事情。
class Program < ActiveRecord::Base
  has_and_belongs_to_many :users    #Likes/Follows
  belongs_to :creator, ::class_name => 'User', :foreign_key => 'creator_id'

这样,你就可以在你的programs表上拥有一个creator_id字段,并使用@program.creator访问它。顺便说一下,这并不是糟糕的建模。

啊,我感觉以前见过这个,应该记住的。这正是我想要的。谢谢! - dewyze
节省了我很多时间,非常感谢!并且点赞提到“这不是糟糕的建模”。 - opensource-developer

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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接