Rails: 如何在关联上设置自定义键

Rails: How to set custom key on association

我有两个模型:ActivityFeed (:id, :activity_id,...)ActivityTour (:activity_id, :tour_id)

class ActivityFeed < ApplicationRecord
    has_many :activity_tours, foreign_key: :activity_id
end

class ActivityTour < ApplicationRecord
    belongs_to :activity_feed, foreign_key: :activity_id
end

我创建了两条记录,例如:a = ActivityFeed.create(activity_id: 123,..)b = ActivityTour.create(activity_id: 123,..)

我预计 b.activity_feed 会 return a 但它 return 会 nil

这是查询 SELECT "activity_feeds".* FROM "activity_feeds" WHERE "activity_feeds"."id" = LIMIT [["id", 123], ["LIMIT", 1]]

请告诉我需要什么来解决这个问题。我将不胜感激

请尝试创建如下关联:

class ActivityFeed < ApplicationRecord
  has_many :activity_tours, foreign_key: :activity_id, primary_key: :activity_id
end

class ActivityTour < ApplicationRecord
  belongs_to :activity_feed, foreign_key: :activity_id, primary_key: :activity_id
end

active record设置为foreign_key时区分ActivityFeed中的activity_idActivityTour是模糊的。所以,把ActivityTour结构改成ActivityTour (:activity_feed_id, :tour_id)比较合适。然后定义关联如下:

   class ActivityFeed < ApplicationRecord
      has_many :activity_tours, foreign_key: :activity_feed_id
   end

   class ActivityTour < ApplicationRecord
      belongs_to :activity_feed, foreign_key: :activity_feed_id
   end