ActiveRecord и Mogoid::Document: ассоциации

У меня есть одна модель, основанная на ActiveRecord, и другая, основанная на Mogoid::Document. Можно ли сделать ассоциацию вместе?

Например, 2 модели:

class User < ActiveRecord::Base
  has_one :avatar, :dependent => :destroy
end

class Avatar
  include Mongoid::Document
  field :file_name
end

И получить аватар пользователя следующим образом:

@user.avatar.file_name

Спасибо !


person Tibal    schedule 03.11.2010    source источник


Ответы (4)


Вы не сможете использовать отношения ActiveRecord.

Вы по-прежнему можете связать два объекта, используя такие методы экземпляра:

class User < ActiveRecord::Base

  def avatar
    Avatar.where(:user_id => self.id).first
  end

  def avatar=(avatar)
    avatar.update_attributes(:user_id => self.id)
  end

end

Было бы интересно инкапсулировать это в модуль :)...

person Nicolas Blanco    schedule 03.11.2010
comment
Вы можете использовать Tenacity (github.com/jwood/tenacity) вместо того, чтобы придумывать собственное решение. - person Raphael; 10.07.2012

Это возможно с помощью драгоценного камня Tenacity: https://github.com/jwood/tenacity.

Мы используем его в производстве в течение нескольких месяцев, и он работает очень хорошо.

person Raphael    schedule 10.07.2012
comment
больше не поддерживается :( - person Aditya Shanker Tagirisa; 07.04.2015

На самом деле был после того же решения. написал это https://rubygems.org/gems/mongo_mysql_relations, чтобы сделать его проще, но в основном это такое же решение, как предложено выше, но менее ручное.

Github находится по адресу https://github.com/eladmeidar/MongoMysqlRelations.

person Elad Meidar    schedule 24.05.2013

Нет, это невозможно. ActiveRecord ожидает, что ассоциация связана с объектом AR. Раньше можно было связать монгоида с дополненной реальностью, но сейчас это тоже не работает.

person Joshua Partogi    schedule 03.11.2010