ruby on rails has_many:通过关联,具有两个具有相同模型的列

| 我有以下模型:
class UserShareTag < ActiveRecord::Base
  attr_protected :sharee_id, :post_id, :sharer_id

  belongs_to :sharer, :class_name => \"User\"
  belongs_to :post
  belongs_to :sharee, :class_name => \"User\"

  validates :sharer_id, :presence => true
  validates :sharee_id, :presence => true
  validates :post_id, :presence => true
end
在Post模型中,我有以下内容:
has_many :user_share_tags, :dependent => :destroy
has_many :user_sharers, :through => :user_share_tags, :uniq => true, :class_name => \"User\"
has_many :user_sharees, :through => :user_share_tags, :uniq => true, :class_name => \"User\"
我如何传达:user_sharers应该对应于:sharer_id?和:user_sharees应该对应于:sharee_id?由于它们都是相同的用户模型,因此我不确定该怎么做。 一些相关的问题-在用户模型中,我有:
has_many :user_share_tags, :dependent => :destroy
has_many :user_shared_posts, :through => :user_share_tags, :uniq => true, :class_name => \"Post\"
has_many :recommended_posts, :through => :user_share_tags, :uniq => true, :class_name => \"Post\"
如何合并其他逻辑,即:user_shared_posts应该包含其中:sharer_id是user_id的帖子?和:recommended_posts应该包含以下位置的帖子::sharee_id是user_id? 提前致谢!     
已邀请:
        您只需要在
has_many
关联中添加一个
:source
参数(并且不需要
:class_name
选项):
has_many :user_sharers, :through => :user_share_tags, :source => :sharer, :uniq => true, :class_name => \"User\"
has_many :user_sharers, :through => :user_share_tags, :source => :sharee, :uniq => true, :class_name => \"User\"
然后,在您的
User
模型中,您需要一个额外的
has_many
关联:
has_many :user_share_tags_as_sharee, :class_name => \"UserShareTag\", :foreign_key => :sharee_id, :dependent => :destroy
has_many :user_share_tags_as_sharer, :class_name => \"UserShareTag\", :foreign_key => :sharer_id, :dependent => :destroy
has_many :user_shared_posts, :source => :post, :through => :user_share_tags_as_sharer, :uniq => true
has_many :recommended_posts, :source => :post, :through => :user_share_tags_as_sharee, :uniq => true
    

要回复问题请先登录注册