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

  • 8lacKy

    8lacKy

    30 Mart 2009
  • Capcom Unity

    Capcom Unity

    5 NİSAN 2010
  • LevelUpTuts

    LevelUpTuts

    20 Ocak 2012