ActiveRecord и Mogoid :: Документ: ассоциации - PullRequest
4 голосов
/ 03 ноября 2010

У меня одна модель основана на 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

Спасибо!

Ответы [ 4 ]

10 голосов
/ 04 ноября 2010

Вы не сможете использовать отношения 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

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

3 голосов
/ 10 июля 2012

Это возможно с самоцветом Tenacity: https://github.com/jwood/tenacity

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

0 голосов
/ 24 мая 2013

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

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

0 голосов
/ 04 ноября 2010

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

...