has_many: a través de una clave externa?

He leído varias preguntas sobre esto, pero todavía tengo que encontrar una respuesta que funcione para mi situación.

Tengo 3 modelos:Apps, AppsGenres yGenres

Aquí están los campos pertinentes de cada uno de esos:

Apps
application_id

AppsGenres
genre_id
application_id

Genres
genre_id

La clave aquí es que estoyno utilizando laid campo de esos modelos.

Necesito asociar las tablas basadas en esasapplication_id ygenre_id campos.

Esto es lo que tengo actualmente, pero no me está dando la consulta que necesito:

class Genre < ActiveRecord::Base
  has_many :apps_genres, :primary_key => :application_id, :foreign_key => :application_id
  has_many :apps, :through => :apps_genres
end

class AppsGenre < ActiveRecord::Base
  belongs_to :app, :foreign_key => :application_id
  belongs_to :genre, :foreign_key => :application_id, :primary_key => :application_id
end

class App < ActiveRecord::Base
  has_many :apps_genres, :foreign_key => :application_id, :primary_key => :application_id
  has_many :genres, :through => :apps_genres
end

Para referencia, aquí está la consulta que finalmente necesito:

@apps = Genre.find_by_genre_id(6000).apps

SELECT "apps".* FROM "apps" 
   INNER JOIN "apps_genres" 
      ON "apps"."application_id" = "apps_genres"."application_id" 
   WHERE "apps_genres"."genre_id" = 6000

Respuestas a la pregunta(1)

Su respuesta a la pregunta