实施后

Following implementation

我有一个用户模型和一个商店模型。我想设置模型关联,以便用户能够关注商店。这意味着用户将成为关注者,商店将成为关注者。

我为此创建了一个跟随模型,并添加了与其他模型的关联:

class CreateFollows < ActiveRecord::Migration[6.0]
  def change
    create_table :follows do |t|
      t.integer :store_id
      t.integer :user_id
      t.string :uid

      t.timestamps
    end
  end
end

class Follow < ApplicationRecord
  belongs_to :store
  belongs_to :user
end

class User < ApplicationRecord
  has_many :follows
end

它正在运行,但我很确定这不是正确的设置。我也发现了这个 tutorial 但我不知道如何在我的案例中使用它。关于如何正确设置模型关联的任何想法?提前致谢!

你基本上明白了。

您缺少的是让用户看到他们关注的商店,反之亦然。用 has_many :through.

class User < ApplicationRecord
  has_many :follows
  has_many :stores, through: :follows
end

class Store < ApplicationRecord
  has_many :follows
  has_many :users, through: :follows
end

现在 user.stores 将获取用户关注的商店,store.users 将获取哪些用户关注该商店。它将为您处理联接并缓存结果。