我有两个模型: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
会返回a
,但会返回nil
。
这是查询SELECT "activity_feeds".* FROM "activity_feeds" WHERE "activity_feeds"."id" = $1 LIMIT $2 [["id", 123], ["LIMIT", 1]]
。
请告诉我需要解决的问题。我将非常感激
答案 0 :(得分: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
答案 1 :(得分:1)
当您将activity_id
设置为ActivityFeed
时,活动记录区分ActivityTour
和foreign_key
是不明确的。因此,将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