Ruby on rails 如何使用命名范围将记录限制为非空记录?
我已经构建了一个RubyonRails应用程序(2.3.9),它允许用户跟踪训练。我试图仅从我的Ruby on rails 如何使用命名范围将记录限制为非空记录?,ruby-on-rails,ruby,named-scope,Ruby On Rails,Ruby,Named Scope,我已经构建了一个RubyonRails应用程序(2.3.9),它允许用户跟踪训练。我试图仅从我的训练表返回在视频链接列中有值的记录。(workout.video_link是一个字符串,包含一个网址) 我以前使用过名为_scope的来限制记录,但仅限于整数列,我不确定如何使用字符串来实现这一点,因为不为NULL显然在这里不起作用 如何在workout.rb中写入作用域来执行此操作?您可以将条件指定为字符串,以检查是否为NULL: class Workout named_scope :with_
训练
表返回在视频链接
列中有值的记录。(workout.video_link
是一个字符串,包含一个网址)
我以前使用过名为_scope的来限制记录,但仅限于整数列,我不确定如何使用字符串来实现这一点,因为不为NULL
显然在这里不起作用
如何在workout.rb
中写入作用域来执行此操作?您可以将条件指定为字符串,以检查是否为NULL
:
class Workout
named_scope :with_link, :conditions => "video_link IS NOT NULL AND video_link != ''"
end
改进Pan Thomakos的示例:
class Workout
named_scope :with_link, :conditions => 'LENGTH(TRIM(video_link)) > 0'
end
这并不限制人们对记录的思考,因为锻炼.视频链接
不包含NULL
。它为空。*已更新,以便您检查是否为非空和!=''。我想在该子句中添加AND video_link NOT NULL条件。字段仍然可能为null,或者为空字符串。但这可能是正确的做法。即使字段为空,上述操作仍然有效。但是,添加非空
的一个原因可能是为了提高性能-如果许多记录将该字段设置为空
,添加它可能会显著提高性能。