В чем разница между полиморфизмом и записью нескольких связей один ко многим - PullRequest
0 голосов
/ 11 декабря 2010

Эй, ребята, Я новичок в рельсах Вот два способа сделать модель Drummer и модель Cymbal, которые имеют много видео

1-й способ с использованием полиморфизма:

class Drummer < ActiveRecord::Base
  has_many :videos, :as => :videoable
end

class Cymbal < ActiveRecord::Base
  has_many :videos, :as => :videoable
end

class Video < ActiveRecord::Base
  belongs_to :videoable, :polymorphic => true
end

2-й способ с использованием двух связей 1: m:

класс Барабанщик

класс Cymbal

класс Video

Я не пробовал их в консоли, но я думаю, что оба будут работать как надо Но я не знаю разницу?

Ответы [ 2 ]

1 голос
/ 11 декабря 2010

Я считаю, что вы должны использовать полиморфный метод, потому что модель не может принадлежать (одна к одной ассоциации) больше, чем одна другая модель. Для получения дополнительной информации см. Это руководство по рельсам: http://guides.rubyonrails.org/association_basics.html

0 голосов
/ 11 декабря 2010

Это зависит от столбцов в вашей базе данных.Если у вас есть videoable_type и videoable_id, вы делаете полиморфизм.В этом случае вызов videoable для экземпляра Video может вернуть что угодно, это не имеет отношения к барабанщикам или тарелкам.Если это drummer_id и cymbal_id, это последняя версия, которую вы описали.

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