Связать одну модель с двумя разными моделями? - PullRequest
0 голосов
/ 15 января 2011

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

Итак, у каждой картинки есть много сражений, но каждая битва принадлежит двум картинам. Как мне это ассоциировать ... Я думал что-то вроде "own_to_many", но, видимо, этого не существует.

Ответы [ 2 ]

2 голосов
/ 15 января 2011

Из того, что я вижу, это можно легко сделать, используя 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

подробнее здесь

0 голосов
/ 15 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...