У меня есть две модели, связанные между собой двумя has_many
/ belongs_to
ассоциациями с внешним ключом, но у меня возникли некоторые проблемы с сохранением любого объекта боя.
Вот мои модели:
Fight.rb
belongs_to :winner, class_name: 'Fighter', foreign_key: :winner_id, inverse_of: 'winned_fights'
belongs_to :looser, class_name: 'Fighter', foreign_key: :looser_id, inverse_of: 'loosed_fights'
Fighter.rb
has_many :winned_fights, class_name: 'Fight', foreign_key: :winner_id, inverse_of: 'winner'
has_many :loosed_fights, class_name: 'Fight', foreign_key: :looser_id, inverse_of: 'looser'
дБ / схема.rb
create_table "fights", force: :cascade do |t|
...
t.integer "winner_id"
t.integer "looser_id"
t.index ["looser_id"], name: "index_fights_on_looser_id"
t.index ["winner_id"], name: "index_fights_on_winner_id"
end
create_table "fighters", force: :cascade do |t|
t.string "name"
...
end
Вот что происходит, когда я пытаюсь сохранить объект Fight:
ActiveRecord::StatementInvalid (SQLite3::SQLException: no such table: main.loosers: INSERT INTO "fights" ("winner_punches", "looser_punches", "victory_type", "rounds", "winner_id", "looser_id", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?)):
Вот запрос SQL, который не выполняется:
Fight Create (1.5ms) INSERT INTO "fights" ("winner_punches", "looser_punches", "victory_type", "rounds", "winner_id", "looser_id", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?) [["winner_punches", 1], ["looser_punches", 1], ["victory_type", 0], ["rounds", 1], ["winner_id", 18], ["looser_id", 2], ["created_at", "2018-10-15 15:46:13.479488"], ["updated_at", "2018-10-15 15:46:13.479488"]]
Я могуНе могу понять, возникла ли проблема из моего has_many
/ belongs_to
объявления ассоциации или это проблема с БД.
Что сейчас работает:
figther.winned_fights
figther.loosed_fights
Кто-нибудь поведет меня по правильному пути?