爲此,我一整天都在爲我的大腦破壞。我通過pool_tournament_match
的關係創建了一個has_many,因此每個比賽可以有很多其他比賽。我創建了一個名爲 pool_tournament_match_relationships
的表格。Rails自引用has_many通過:沒有添加正確的記錄
create_table :pool_tournament_match_relationships do |t| t.belongs_to :parent, class_name: 'PoolTournamentMatch', index: true t.timestamps end
pool_tournament_match.rb
has_many :pool_tournament_match_relationships, class_name: 'PoolTournamentMatchRelationship', foreign_key: :parent_id has_many :parents, through: :pool_tournament_match_relationships
所以,我應該能夠做到像match.pool_tournament_match_relationships.create(parent: anotherMatch)
然而,當我這樣做,記錄添加到關係表實際上是match
而不是anotherMatch
。因此,例如,如果匹配id是1,另一個匹配id是2. 1將被輸入到關係表中。
這裏是從控制檯輸出:
m.pool_tournament_match_relationships.create(parent: m2)
INSERT INTO "pool_tournament_match_relationships" ("parent_id", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["parent_id", 1], ["created_at", 2016-11-08 21:51:29 UTC], ["updated_at", 2016-11-08 21:51:29 UTC]]
注意parent_id
輸入是1,其是m,而不是平方米的ID。
irb(main):012:0> m.id => 1 irb(main):013:0> m2.id => 5
我感謝您的幫助!
編輯:添加架構的關係表: create_table "pool_tournament_match_relationships", force: :cascade do |t| t.integer "parent_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["parent_id"], name: "index_pool_tournament_match_relationships_on_parent_id", using: :btree end
你在'pool_tournament_match_relationships'表中只有一個外鍵? – idej
我添加了架構。看起來像parent_id只有一個整數。 – okysabeni
除非您有'parent_id'字段和'pool_tournament_match_id'字段,否則您的多對一關係將不起作用。看下面的例子。 – moveson