为什么我的has_many foreign_key协会没有返回我的期望?

时间:2016-03-07 22:41:26

标签: ruby-on-rails foreign-keys rails-activerecord has-many

我在我的模特上有一个自我加入:

CheckedInUsers

架构:

class Frame < ActiveRecord::Base
  has_many :player_frames, class_name: 'Frame', foreign_key: 'player_id'
  belongs_to :player
end

我希望 create_table "frames", force: :cascade do |t| t.integer "number" t.integer "player_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false end create_table "players", force: :cascade do |t| t.integer "number" t.integer "game_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false end 能够返回与self共享同一个player_id的所有对等帧。但事实并非如此。

player_frames

为什么要尝试加载player_id为4的帧?

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找的是一个has_many:通过

 public static int getID() {
    AtomicInteger c = new AtomicInteger(0);
    return c.incrementAndGet();
}

这将允许您说出player.frames并将返回player_frames中引用的具有该玩家ID的所有帧记录。

答案 1 :(得分:1)

使用frame_players关联表,您可以致电:

frame.players(返回给定帧的所有玩家)

player.frames(返回给定玩家的所有帧数)

(请注意,在rails约定中,关联表的名称应以字母顺序排在第一位的表的名称开头)