has_many :avec l'aide d'une clé étrangère?

J'ai lu plusieurs questions à ce sujet, mais n'ont pas encore trouvé une réponse qui fonctionne pour ma situation.

J'ai 3 modèles: Apps, AppsGenres et Genres

Voici les domaines pertinents de chacune de celles-ci:

Apps
application_id

AppsGenres
genre_id
application_id

Genres
genre_id

La clé ici est que je suis pas à l'aide de la id de champ à partir de ces modèles.

J'ai besoin d'associer les tableaux en fonction de ces application_id et genre_id champs.

Voici ce que j'ai actuellement a, mais ce n'est pas pour me la requête dont j'ai besoin:

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

Pour référence, voici la requête que j'ai finalement besoin de:

@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
  • Ce SQL êtes-vous maintenant?
InformationsquelleAutor Shpigford | 2013-04-25