模型关联的问题

Trouble with model associations

商店的目标是创建奖励并将每个奖励与他选择的粉丝相关联。这是我的设置:

class Shop < ApplicationRecord
  has_many :rewards
  has_many :follows
  has_many :users, through: :follows
end

class Reward < ApplicationRecord
  belongs_to :shop
end

class Follow < ApplicationRecord
  belongs_to :shop
  belongs_to :user
  has_many :reward_participant
end

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

我创建这个模型是为了捕获奖励和关注者关联。

class RewardParticipant < ApplicationRecord
  belongs_to :reward
  belongs_to :follow
end

并且我创建了以下迁移:

class CreateRewards < ActiveRecord::Migration[6.0]
  def change
    create_table :rewards do |t|
      t.string :title
      t.text :body
      t.date :expires
      t.integer :shope_id

      t.timestamps
    end
  end
end


class CreateRewardParticipants < ActiveRecord::Migration[6.0]
  def change
    create_table :reward_participants do |t|
      t.integer :reward_id
      t.integer :follow_id

      t.timestamps
    end
  end
end

我无法确定这是否是模型关联和迁移的正确方法。提前感谢您的帮助!

总的来说你是对的。

我们想让用户关注一个店铺,一个店铺可以创建奖励,给很多粉丝很多奖励。

1。视觉架构:

2。模型协会(完整版)

user.rb

has_many :follows
has_many :reward_follows, through: :follows
has_many :rewards, through: :reward_follows # NOT through shops
has_many :shops, through: :follows

follow.rb

belongs_to :user
belongs_to :shop
has_many :reward_follows

shop.rb

has_many :rewards
has_many :reward_follows, through: :rewards # NOT through follows
has_many :follows
has_many :users, through: :follows

reward.rb

has_many :reward_follows
belongs_to :shop
has_many :follows, through: :reward_follows
has_many :users, through: :follows

3。不要使用日期字段。使用日期时间字段。

理由:https://www.ruby-forum.com/t/time-without-date/194146

这为我个人节省了长期的工作时间。