2016-04-06 27 views
0

Bir kullanıcı zaten bir ders için bir ders yaptığını test etmeye çalışıyorum ve eğer öyleyse bunları derse götürün, aksi halde yeni bir ders yapın. Ders, dersin iç içe geçmiş bir kaynağıdır, bu yüzden kullanmak istiyorum: kullanıcının önceden oluşturulmuş bir dersi olup olmadığını bulmak için course_id ve eğer öyleyse bunları bu derse götürün.Bir kullanıcı zaten raylarda bir kayda sahip olduğunu test edin

Benim

Dürüst herhangi bir yardım çok iyi olurdu (. Bu birinci çalışmak isteyen, şimdilik hiçbir başka)

<% if current_user.lessons.course_id == (course)%> 
     <td><%= link_to course.title, edit_lesson_path(:course_id) %></td> 
<% end %> 

deneyin ve bir şey eklemek gerekir bana bildirin :)

cevap

3

exists? yöntemini kullanabilirsiniz. Yöntem için documentation İşte. Kullanıcı dersleri kurar olarak toddmetheny çözümüyle @

Çözüm Güncelleme

<% if current_user.lessons.exists?(course: course) %> 

kesinlikle daha hızlı olacaktır. Bunun üzerine

Herhalde kullanmak hala exists? yöntemi onun yaklaşım ederdim ama, söyleniyor:

<% if Lesson.exists?(user: current_user, course: course) %> 

Hızlı bir kriter, 1000 iterasyon ile.

# mine (first solution with a user with over 500 lessons) 
<Benchmark::Tms:0x007fc5b0ceaab8 @label="", @real=9.431750780000584, @cstime=0.0, @cutime=0.0, @stime=0.2999999999999998, @utime=7.6299999999999955, @total=7.929999999999995> 

# mine (updated solution) - Fastest 
<Benchmark::Tms:0x007fc5ab550d48 @label="", @real=8.289565541999764, @cstime=0.0, @cutime=0.0, @stime=0.3, @utime=6.7, @total=7.0> 

# toddmetheny 
<Benchmark::Tms:0x007fc5b09c5888 @label="", @real=9.237036614998942, @cstime=0.0, @cutime=0.0, @stime=0.30000000000000004, @utime=7.4, @total=7.7> 
+0

Müthiş! Bu gerçekten yardımcı oldu, iki kez yavmak istiyorum ama – Xavier

+0

güzel bitti, Justin yapamam. Bunu kıyaslamış olmanı seviyorum. Upvoting. – toddmetheny

+1

@Xavier, sizlere ikinci yükseltiyi verebilirsiniz :) Onun cevabı, güncellenmiş çözümümüzü –

2

Dene:

Lesson.where(user_id: current_user.id, course_id: course.id).count > 0 
+1

Teşekkürler !!! İşe yarıyor! – Xavier

+0

harika! duyduğuma sevindim. – toddmetheny

İlgili konular