Rails has_many :par le biais de recherche par Attributs Supplémentaires dans la Jointure Modèle

Nouveau à Ruby et Rails, mais je suis livre instruits par maintenant (qui, apparemment, ne veut rien dire, haha).

J'en ai deux modèles, l'Événement et l'Utilisateur rejoint par le biais d'un tableau EventUser

class User < ActiveRecord::Base
  has_many :event_users
  has_many :events, :through => :event_users
end

class EventUser < ActiveRecord::Base
  belongs_to :event
  belongs_to :user

  #For clarity's sake, EventUser also has a boolean column "active", among others
end

class Event < ActiveRecord::Base
  has_many :event_users
  has_many :users, :through => :event_users
end

Ce projet est un calendrier, dans lequel je dois garder la trace de gens de la signature et de rayer leur nom pour un événement donné. Je me figure la nombreux de nombreux est une bonne approche, mais je ne peux pas faire quelque chose comme ceci:

u = User.find :first
active_events = u.events.find_by_active(true)

Parce que les événements n'ONT pas réellement de données supplémentaires, le EventUser modèle ne. Et alors que je pouvais faire:

u = User.find :first
active_events = []
u.event_users.find_by_active(true).do |eu|
  active_events << eu.event
end

Cela semble être contraire à "les rails de chemin". Quelqu'un peut m'éclairer, ce qui a été m'énerve pour un long temps ce soir (ce matin)?

  • Vous pouvez également créer un nom de champ à l'aide de Gareth de la suggestion.
InformationsquelleAutor Stefan Mai | 2009-01-03