2011-09-01 6 views
1

Est-il possible de faire une extension d'association sur une relation belongs_to?Activerecord association extensions sur appartient à

J'ai essayé de le faire en utilisant un module, mais garder leur dit que la méthode que je vous appelle est privé:

module TestExtension 
    def test 
    puts 'test successful' 
    end 
end 

class Question < ActiveRecord::Base 
    belongs_to :user, extend: TestExtension 
end 

Chaque fois que je l'exécute si elle se plaint que la méthode est privée

q = Question.first 
q.test 
# => NoMethodError: Attempt to call private method `test' 

Je ne suis pas sûr à 100% s'il est possible de faire des extensions AR sur belongs_to. Il fonctionnait correctement sur Rails 3.0.7 mais échoue maintenant en 3.1.0

+0

? Dans un nouveau fichier dans le répertoire lib? – Coderama

Répondre

0

Ceci est un known issue en 3.1.0 qui n'a pas encore été résolu. Fondamentalement, la nouvelle conception d'association de 3.1.0 ne prend pas en charge l'extension des associations belongs_to car elle n'a jamais été une fonctionnalité prise en charge en premier lieu. Cependant, le problème est toujours ouvert afin qu'il puisse être résolu à l'avenir; vous devriez probablement commenter le problème au support vocal si vous le voulez.

En outre, l'erreur de méthode privée que vous obtenez, vous obtiendriez même si vous n'aviez pas la pièce extend: TestExtension; Je crois #test est une méthode privée sur tous les objets ActiveRecord. Où placez-vous le module TestExtension?

+0

Très utile - merci pour la tête sur les deux points. Je n'avais aucune idée de la restriction .test –

Questions connexes