你如何区分2个has_many关系一个多态,一个是foreign_key?

时间:2017-05-16 22:00:55

标签: ruby-on-rails

我正在使用一个表来实现一个Activity Feed 与用户的两种不同关联 1.一种称为用户可通知的多态关联,因为用户可以是事件的目标,例如用户跟随另一个用户 2.作为活动接收者的用户的belongs_to关联,并将在其Feed中看到它。

您如何区分两个不同的has_many活动关联?

当我调用user.activities时,它确实使用了我想要的关联,即user_id,但有没有办法明确地给它命名?

class CreateActivities < ActiveRecord::Migration[5.0]
 def change
   create_table :activities do |t|
   t.references  :user, foreign_key: true, index: true
   t.references  :notifiable, polymorphic: true, index: true
 end
end

class User < ApplicationRecord
  has_many :activities, as: :notifiable, dependent: :destroy
  has_many :activities, foreign_key: "user_id"
end

class Activity < ApplicationRecord
 belongs_to :notifiable, polymorphic: true
 belongs_to :user
end

1 个答案:

答案 0 :(得分:0)

是的,您可以提供自定义名称并提供类名,以便rails可以了解要查找的关联

  has_many :some_random_name, class:"Activity", foreign_key: "user_id"