2011-03-08 70 views
1

我已經構建了一個Ruby on Rails應用程序(2.3.9),它允許用戶跟蹤鍛鍊。我正在嘗試僅返回Workout表中的記錄,這些記錄在video_link列中有一個值。 (workout.video_link是一個字符串幷包含一個網址)。如何使用named_scope將記錄限制爲非空白記錄?

我已經使用了一個named_scope限制記錄之前,但只有在整數列,我不知道如何用字符串做這個,因爲IS NOT NULL顯然不會在這裏工作。

我該如何編寫範圍workout.rb做這樣的事情?

回答

1

您可以指定條件爲一個字符串檢查IS NOT NULL

class Workout 
    named_scope :with_link, :conditions => "video_link IS NOT NULL AND video_link != ''" 
end 
+0

這不會限制這些記錄還以爲是因爲'workout.video_link'沒有按不包含NULL。它是空白的。 – bgadoci 2011-03-08 20:26:41

+0

我也更新了我的範圍。 – 2011-03-08 20:35:03

+0

*已更新,因此您正在檢查非NULL和!=''。 – 2011-03-08 20:36:46

1

提高泛Thomakos'例如:

class Workout 
    named_scope :with_link, :conditions => 'LENGTH(TRIM(video_link)) > 0' 
end 
+0

我會在該子句中添加AND video_link IS NOT NULL條件。字段仍然可能爲空,或者它爲空字符串。但這可能是一條路。 – nzifnab 2011-03-08 20:38:25

+0

即使該字段爲NULL,上述內容仍然有效。然而,添加'IS NOT NULL'的一個原因可能是提高性能 - 如果許多記錄將該字段設置爲NULL,則可能會顯着提高性能。 – Zabba 2011-03-08 20:42:05