2010-11-03 5 views
4

J'ai un modèle basé sur ActiveRecord et un autre basé sur un document Mogoid ::. Est-ce possible de faire une association ensemble?ActiveRecord et Mogoid :: Document: associations

Par exemple, les 2 modèles:

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

class Avatar 
    include Mongoid::Document 
    field :file_name 
end 

et récupérer avatar de l'utilisateur comme ceci:

@user.avatar.file_name 

Merci!

Répondre

10

Vous ne pourrez pas utiliser les relations ActiveRecord.

Vous pouvez toujours lier les deux objets à l'aide des méthodes d'instance comme ceci:

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 

Il serait intéressant de résumer cela dans un module:) ...

+0

Merci beaucoup. Votre paix de code fonctionne bien! – Tibal

+0

Vous pouvez utiliser Tenacity (https://github.com/jwood/tenacity) au lieu de pirater votre propre solution. – Raphael

-2

Non ce n'est pas possible. ActiveRecord attend l'association à un objet AR. Vous étiez en mesure de relier Mongoid à AR, mais cela ne fonctionne pas non plus maintenant.

+0

Cette réponse est fausse. – Raphael

3

Il est possible avec le petit bijou Ténacité : https://github.com/jwood/tenacity

Nous l'utilisons dans la production depuis quelques mois et ça fonctionne très bien.

+1

il n'est plus maintenu :( –

Questions connexes