2011-01-15 3 views
0

Эй, ребята. Я пытаюсь построить этот сайт Battle Battle, (где вы выбрали понравившуюся картинку), и у меня было две модели. Картинки и битвы.Связать одну модель с двумя разными моделями?

Таким образом, каждое изображение has_many Battles, но каждое сражение принадлежит двум картинкам. Как мне это связать. Я думал о чем-то вроде «принадлежит_то_мании», но, по-видимому, этого не существует.

ответ

2

от того, что я вижу, это можно легко сделать с помощью has_and_belongs_to_many ассоциации

Вы должны создать has_many :through отношения, если вам нужно работать с моделью отношений как самостоятельного субъекта. Если вам не нужно ничего делать с моделью отношений, которая, вероятно, так, что может быть проще создать has_and_belongs_to_many отношения

вот как вы делаете HABTM:

class Picture < ActiveRecord::Base 
    has_and_belongs_to_many :battles 
end 

и

class Battle < ActiveRecord::Base 
    has_and_belongs_to_many :pictures 
end 

, то вы можете позвонить picture.battles и battle.pictures

вам также необходимо создать новую миграцию, которая выглядит как го более

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 

Информация here

+0

Большое спасибо! – Rickmasta

0

Это ассоциация многих-ко-многим. Вы можете достичь этого с помощью модели объединения. Проверьте has_many в API Docs

Смежные вопросы