Вопрос

У меня есть одна модель, основанная на ActiveSerecord и другой на основе 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

Спасибо !

Это было полезно?

Решение

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

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

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

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

Другие советы

Это возможно с упорством GEM: https://github.com/jwood/tenacity.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top