2011-01-15 25 views
0

Hey Leute. Ich versuche, diese Picture Battle-Site zu erstellen (wo Sie das Bild ausgewählt haben, das Sie bevorzugen), und ich hatte zwei Modelle. Bilder und Schlachten.Einem Modell zwei verschiedene Modelle zuordnen?

Also Jedes Bild has_many Battles, aber Each Battle gehört zu zwei Bildern. Wie kann ich es assoziieren? Ich dachte etwas wie "gehört_zu_viel", aber anscheinend existiert das nicht.

Antwort

2

von dem, was ich sehe, diese leicht mit einem has_and_belongs_to_many Verein getan werden könnte

Sie eine has_many :through Beziehung einrichten sollen, wenn Sie mit dem Beziehungsmodell als eigenständige Einheit arbeiten müssen. Wenn du mit dem Beziehungsmodell etwas tun müssen, um nicht, was wahrscheinlich der Fall ist, kann es einfacher sein, eine has_and_belongs_to_many Beziehung einzurichten

hier ist, wie wollen Sie das HABTM:

class Picture < ActiveRecord::Base 
    has_and_belongs_to_many :battles 
end 

und

class Battle < ActiveRecord::Base 
    has_and_belongs_to_many :pictures 
end 

dann können Sie rufen picture.battles und battle.pictures

Sie auch eine neue Migration erstellen müssen, wie th aussieht ist

class CreateBattlesPicturesJoinTable < ActiveRecord::Migration 
    def self.up 
    create_table :battles_pictures, :id => false do |t| 
     t.integer :battle_id 
     t.integer :picture_id 
    end 
    end 

    def self.down 
    drop_table :battles_pictures 
    end 
end 

weitere Informationen here

+0

Vielen Dank! – Rickmasta

0

Es ist eine Viele-zu-Viele-Assoziation. Sie können dies über ein Join-Modell erreichen. Prüfen has_many in der API-Dokumentation

Verwandte Themen