小编Dan*_*hin的帖子

ActiveRecord :: HasManyThroughOrderError:不能有has_many:通过关联

在我的rails应用程序中,我正在尝试创建一个系统,用于奖励用户获得各种成就的徽章

创建了一个表'user_badges'

移民:

class CreateUserBadges < ActiveRecord::Migration[5.1]
  def change
    create_table :user_badges do |t|

    t.references :user, foreign_key: true
    t.references :badge, foreign_key: true

    t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

model UserBadge:

class UserBadge < ApplicationRecord

  belongs_to :user
  belongs_to :badge

end
Run Code Online (Sandbox Code Playgroud)

модель徽章:

class Badge < ApplicationRecord
  has_many :users, through: :user_badges
  has_many :user_badges
end
Run Code Online (Sandbox Code Playgroud)

型号用户:

class User < ApplicationRecord
  ...

  has_many :badges, through: :user_badges
  has_many :user_badges

  ...
end
Run Code Online (Sandbox Code Playgroud)

当我尝试向用户添加徽章时:

b = Badge.create(title: 'first')

User.last.badges << b
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ActiveRecord::HasManyThroughOrderError: Cannot have a has_many 
:through association 'User#badges' which …
Run Code Online (Sandbox Code Playgroud)

ruby activerecord ruby-on-rails associations

1
推荐指数
2
解决办法
1060
查看次数

标签 统计

activerecord ×1

associations ×1

ruby ×1

ruby-on-rails ×1