Öncelikle herkese iyi forumlar.
Şuradaki konuda bahsettiğim ilişkilendirme seçeneklerinden olan winner
kısmını çok-a-çok
olarak ilişkilendirmek için bir join table
oluşturmaya çalışıyorum ve başarısız oldum. Denediklerim:
Room.rb :
class Room < ApplicationRecord
has_and_belongs_to_many :winners, join_table: "winner_rooms", dependent: :destroy
end
User.rb:
class User < ApplicationRecord
has_and_belongs_to_many :won_rooms, join_table:"winner_rooms", dependent: :destroy
end
Ama aynı kodları ayarlayarak denediğimde başarılı olamadım.
Migration dosyası:
class CreateJoinTableWinnerWonRooms < ActiveRecord::Migration[6.1]
def change
create_join_table(:winners, :won_rooms,table_name: :winner_rooms) do |t|
t.index :winner_id
t.index :won_room_id
end
end
end
Hata:
Room.first.winners << User.where(role:"player")
Room Load (0.3ms) SELECT "rooms".* FROM "rooms" ORDER BY "rooms"."id" ASC LIMIT ? [["LIMIT", 1]]
/home/tuncay/.rvm/gems/ruby-3.0.1/gems/activerecord-6.1.4.6/lib/active_record/inheritance.rb:237:in `compute_type': uninitialized constant Room::Winner (NameError)
Diğer ilişkilendirme hatasız çalışıyor.
Şimdiden teşekkürler.