5

me sale el siguiente mensaje de error cuando se solicita la página principal de mi aplicación de ejemplo (siguiente capítulo de Michael Hartl Tutorial 11):No se pudo encontrar la asociación fuente (s): followed_id en el modelo de relación en Rails 3.2

"ActiveRecord::HasManyThroughSourceAssociationNotFoundError in Pages#home"
"Could not find the source association(s) :followed_id in model Relationship. Try 'has_many :followed_users, :through => :relationships, :source => '. Is it one of :follower or :followed?"

Esto es realmente extraño, ya que seguí exactamente las instrucciones del tutorial. Incluso copio pegado cada fragmento de código.

Mi modelo de usuario (extracto):

class User < ActiveRecord::Base 

    has_many :relationships, foreign_key: "follower_id", dependent: :destroy 
    has_many :followed_users, through: :relationships, source: "followed_id" 

    has_many :reverse_relationships, foreign_key: "followed_id", class_name: "Relationship", dependent: :destroy 
    has_many :followers, through: :reverse_relationships, source: :follower 

Mi modelo de relación:

class Relationship < ActiveRecord::Base 
    attr_accessible :followed_id 

    belongs_to :follower, class_name: "User" 
    belongs_to :followed, class_name: "User" 

    validates :follower_id, presence: true 
    validates :followed_id, presence: true 
    end 

Mi archivo de migración:

class CreateRelationships < ActiveRecord::Migration 
    def change 
     create_table :relationships do |t| 
     t.integer :follower_id 
     t.integer :followed_id 

     t.timestamps 
     end 

     add_index :relationships, :follower_id 
     add_index :relationships, :followed_id 
     add_index :relationships, [:follower_id, :followed_id], unique: true 
    end 
    end 

He estado tratando de solucionar este problema, pero Simplemente no tengo idea de cuál podría ser el problema (copia exacta del código del tutorial).

+0

Puede publicar su solución como respuesta y aceptarla para que la gente no pierda el tiempo leyendo la pregunta solo para descubrir que la ha solucionado. – EricM

+0

Eso es lo que intenté primero, pero no me dejaba decir que 'los usuarios que tienen una reputación inferior no pueden responder sus propias preguntas'. De todos modos, voy a poner el Editar en la parte superior de la pregunta. Lo siento si leyó toda la pregunta solo para descubrir que ya la había resuelto. –

Respuesta

13

encontrado el error: En mi modelo de usuario que tenía que cambiar

has_many :followed_users, through: :relationships, source: "followed_id" 

a

has_many :followed_users, through: :relationships, source: :followed 

parece ser un error tipográfico en el tutorial de Hartl listado 11.10 http://ruby.railstutorial.org/book/ruby-on-rails-tutorial#code:has_many_following_through_relationships, ya que es donde me dieron el "source:" followed_id "" code from.

Recibí el código fijo de Hartl's github "aplicación de muestra".

Cuestiones relacionadas