2012-01-25 1 views
0

J'ai un module, où je défini une fonction comme ceci:comment remplacer la méthode d'association par défaut = (associée) de belongs_to?

module A 
    def item=(item) 
    ... 
    end 
end 

Puis-je avoir une classe qui a une association de belongs_to et comprennent le module A:

class User < ActiveRecord::Base 
    include A 
    belongs_to :item 
    ... 
end 

Je veux la classe utilisateur avoir mon objet =, mais il semble que cette façon de faire ne fonctionne pas.

Quelqu'un peut-il me dire comment remplacer la méthode par défaut item =?

+0

Quelle version des rails? La version 3.2 publiée récemment ajoute un support pour les associations modularisées afin que cela fonctionne (http://blog.hasmanythrough.com/2012/1/20/modularized-association-methods-in-rails-3-2) –

+0

oui !! !!Merci!!!! – HanXu

Répondre

1

Déplacer la déclaration include A après la belongs_to :item:

class User < ActiveRecord::Base 
    belongs_to :item 
    include A 
    ... 
end 

la déclaration belongs_to :item est en train de redéfinir la méthode item=.

+0

.J'ai essayé ... ça ne fonctionne pas ... – HanXu

+0

J'ai mis à jour mes rails à 3.2.0 .. alors ça marche .... – HanXu

Questions connexes