"User" -6ren">
gpt4 book ai didi

ruby-on-rails - ruby on rails has_many :through association which has two columns with same model

转载 作者:行者123 更新时间:2023-12-02 00:32:24 26 4
gpt4 key购买 nike

我有以下模型:

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 的帖子?

提前致谢!

最佳答案

您只需将 :source 参数添加到您的 has_many 关联(并且您不需要 :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

关于ruby-on-rails - ruby on rails has_many :through association which has two columns with same model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6195916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com