Activerecord и Mogoid :: Документ: Ассоциации
-
28-09-2019 - |
Вопрос
У меня есть одна модель, основанная на 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, но он тоже не работает.