SORU
3 Ocak 2009, CUMARTESİ


Raylar has_many :Birleşim Model Ekstra özellikleri ile Bul

Hem Ruby ve Rails için yeni ama şimdiye kadar hiçbir şey belli, haha anlamına gelir) kitap eğitimimi aldım.

İki model var, Olay ve Kullanıcı bir tablo ile EventUser katıldı

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

Bu proje insanların kaydolmak ve kendi adı verilen bir olay için tırmalama dışarı izlemek için bir takvim. Çok iyi bir yaklaşım olduğunu düşünüyorum, ama böyle bir şey yapamam:

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

Olaylar aslında bu ekstra veri olmadığı için, EventUser modeli yok. Yapabileceğim:

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

Bu aykırı gibi görünüyor"". raylar yolu Biri bana, bu uzun bir süre için beni rahatsız ediyor bu gece (bu sabah) bu konuda aydınlatabilir mi?

Çok teşekkürler!

CEVAP
3 Ocak 2009, CUMARTESİ


Nasıl Kullanıcı modeli böyle bir şey ekleme hakkında?

has_many  :active_events, :through => :event_users, 
          :class_name => "Event", 
          :source => :event, 
          :conditions => ['event_users.active = ?',true]

Bundan sonra sadece çağırarak bir kullanıcı için aktif olaylar almak mümkün olmalıdır:

User.first.active_events

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • eisleyhead

    eisleyhead

    11 Ocak 2006
  • Kayla Caton - Peet

    Kayla Caton

    23 HAZİRAN 2012
  • MVLV28

    MVLV28

    17 Mart 2008