我试图让联接表在模式中使用自定义ID。我希望能够使用联接表上的custom_id作为recipient_id
这是我目前的设置:
class User > ActiveRecord::Base
has_many :user_posts
has_many :received_posts, through: :user_posts, source: :recipient
end
class UserPost < ActiveRecord::Base
belongs_to :recipient, class_name: "User"
belongs_to :post
end
class Post < ActiveRecord::Base
has_many :user_posts
has_many :recipients, through: :user_posts, source: :recipient
end
这是我的联接表的架构:
UserPost
recipient_id: integer
post_id: integer
我得到的错误是:
PG::UndefinedColumn: ERROR: column user_posts.user_id does not exist
我尝试过像上面那样添加来源,但无济于事。这让我觉得它在联接表上寻找user_id而不是recipient_id。我不确定如何正确指定自定义ID作为要使用的字段。我在这里试过外键和其他答案,但没有运气。可能是我实现外键或源错误。
非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
在用户模型中,将foreigh_key
添加到:user_posts
class User > ActiveRecord::Base
has_many :user_posts, foreign_key: :recipient_id
has_many :received_posts, through: :user_posts, source: :recipient
end