2010-11-11 4 views
2

Je suis en train d'installer une relation de modèle dans des rails et pourrait utiliser votre aide, car il ne fonctionne pas: 0Rails - belongs_to, has_many

class User < ActiveRecord::Base 
    has_many :request_threads 
end 

class RequestThread < ActiveRecord::Base 
    belongs_to :user, :foreign_key => :creator_id 
end 

En termes de schémas, la table request_threads a creator_id au lieu de user_id, c'est peut-être le problème?

Je veux être en mesure de le faire:

@user.request_threads 

Mais cela ne fonctionne pas, les erreurs. Des idées?

MISE À JOUR

Message d'erreur: "POST Started "/ request_threads" pour 127.0.0.1 à Mer 10 novembre 2010 22:21:41 -0800 Traitement par RequestThreadsController # créer comme JS Paramètres: {" request_thread "=> {" request_type_id "=>" 1 "," message "=>" blahdiado "}," authenticity_token "=>" o9ibF/m8Vw4Uce5u1n3R + atD2/XVqnZcBVOdXimAZEA = "," utf8 "=>" ✓ "," destinataires "=> [" 4 "," 3 "]} User Load (0.7ms) SELECT" utilisateurs ". * FROM" users "WHERE (" utilisateurs "." id "= 2) LIMIT 1 CACHE (0.0ms) SELECT "utilisateurs". * FROM "utilisateurs" WHERE ("utilisateurs". "Id" = 2) LIMITE 1 Achevé en 63ms

NoMethodError (méthode non définie user_id=' for #<RequestThread:0x1058df0d0>): app/controllers/request_threads_controller.rb:50:in créer ' app/middleware/flash_session_cookie_middleware.rb: 14: `appel' "

+0

"cela ne fonctionne pas" - Y at-il un message d'erreur? – zetetic

+1

Pouvez-vous partager votre schéma? – rwilliams

+0

@rwilliams, quel schéma voulez-vous voir, c'est énorme – AnApprentice

Répondre

4

Essayez ceci.

class User < ActiveRecord::Base 
    has_many :request_threads, :foreign_key => :creator_id 
end 

class RequestThread < ActiveRecord::Base 
    belongs_to :user 
end 

Le contrôleur a l'air correct. Ok, essayez ceci dans votre modèle RequestThread.

alias_attribute :user_id, :creator_id 
+0

Merci. essayé cela, même erreur "NoMethodError (méthode non définie' user_id = 'pour # ): "Mon contrôleur vous convient-il? "Créer def @user = User.find (CURRENT_USER) @request_thread = @ user.request_threads.new (params [: request_thread]) " – AnApprentice

+0

Cela ne fonctionne que pour user.request_threads ne request_thread.user – rwilliams

+0

en utilisant également le: class_name argument est inutile dans ce cas. – rwilliams

2

Cela devrait fonctionner pour vous.

class User < ActiveRecord::Base 
    has_many :request_threads, :foreign_key => :creator_id 
end 

class RequestThread < ActiveRecord::Base 
    belongs_to :user, :foreign_key => :creator_id 
end 
Questions connexes