Rails: Non id de clé étrangère de recherche ActiveRecord

Je veux ActiveRecord à la recherche par un non-colonne d'id d'une table.
J'espère que cela est clair quand je vous donne mon exemple de code.

class CoachClass < ActiveRecord::Base
  belongs_to :coach
end

class Coach < ActiveRecord::Base
    has_many :coach_classes, :foreign_key => 'user_name'
end

Quand je fais un
coach_obj.coach_classes, ce, à juste titre, déclenche

SELECT * FROM `coach_classes` WHERE (`coach_classes`.user_name = 2)

(2 étant le coach du id ici qui est mon problème.)

Je veux qu'il déclenche

SELECT * FROM `coach_classes` WHERE (`coach_classes`.user_name = 'David')

("David" être le coach de l' user_name)

user_name est unique et présente dans les deux tables.

Je ne veux pas avoir un coach_id dans mon coach_classes table pour une raison quelconque.

  • conseils non sollicités: vous pouvez envisager d'ajouter un coach_id à la table, il sera plus facile si cette relation est imbriquée et plus conventionnel.
  • Merci Jed. Mais je ne veux pas coach_id là pour une raison.
InformationsquelleAutor Garfield | 2010-07-23