【问题标题】:How do you distinguish between 2 has_many relationships one polymorphic, one a foreign_key?你如何区分 2 个 has_many 关系,一个是多态的,一个是foreign_key?
【发布时间】:2017-05-17 07:24:18
【问题描述】:

我正在使用一个表格实现一个活动供稿,该表格具有 与用户的两种不同关联。
1. 称为通知用户的多态关联,因为用户可以成为事件的目标,例如用户关注另一个用户 2. 与作为活动接收者的用户的 belongs_to 关联,并将在他们的提要中看到它。

你如何区分这两种不同的 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

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 2011-05-06
      相关资源
      最近更新 更多