Mongoid Relations 1 .. * - PullRequest
       5

Mongoid Relations 1 .. *

0 голосов
/ 12 августа 2011

Рассмотрим следующее:

class Picture
  include Mongoid::Document

  field :data, :type => String
end

class Cat
  include Mongoid::Document

  has_one :picture, :autosave => true
  field :name, :type => String
end

class Dog
  include Mongoid::Document

  has_one :picture, :autosave => true
  field :name, :type => String
end

Теперь возможно ли сделать следующее:

dog = Dog.new
dog.picture = Picture.new
dog.save!

Без необходимости редактировать класс Picture для следующего:

class Picture
  include Mongoid::Document

  belongs_to :cat
  belongs_to :dog
  field :data, :type => String
end

Мне не нужны картинки, чтобы знать о Dog или Cat. Это возможно?

Ответы [ 2 ]

1 голос
/ 12 августа 2011

Я полагаю, что вы могли бы сделать это, если бы добавили belongs_to :picture в свои классы собак и кошек. Сторона отношения, которая имеет belongs_to, является стороной, которая будет хранить внешний ключ. Это поместит поле picture_id в каждое из Dog и Cat, вместо того, чтобы хранить whatever_id для каждого типа мышления, которое вы хотите связать в своем классе Picture.

0 голосов
/ 12 августа 2011

Нет, это не так. Вам нужно иметь cat_id или dog_id или несколько полиморфных obj_id, чтобы все они хранили информацию о принадлежности этой картинки.

Или откуда вы знаете, какое изображение принадлежит текущему псу или кошке?

...