我想抓住Blogs
所在的title.present? == true
。 (Blogs
的字符串属性为title
)。
class Blog < ActiveRecord::Base
scope :with_present_titles, -> {where("#{title.present?} == ?", true)} #doesn't work
end
@blogs = Blog.with_present_titles #doesn't work
不确定我在这里做错了什么。
答案 0 :(得分:3)
要返回包含theCheck.setOnCheckedChangeListener(null);
theCheck.setChecked(false);
theCheck.setOnCheckedChangeListener(toggleButtonChangeListener);
列中某些值的所有记录,您可以使用以下查询更新范围:
title
这将返回标题栏中包含一些值的所有记录,并留下任何scope :with_present_titles, -> { where("title is not null and title != ''") }
和空标题。
null
是rails提供的方法,您不能在数据库查询中简单地使用这些方法。
答案 1 :(得分:1)
只需编写以下范围即可。
scope :with_present_titles, -> { where('title IS NOT ? AND TITLE != ?', nil, '') }
答案 2 :(得分:1)
根据您的导轨版本,您还可以使用where.not
(在导轨4中引入)例如
scope :with_present_titles, ->{where.not(title: [nil,'']) }
#Blog.with_present_titles.to_sql
#=> "SELECT [blogs].*
# FROM [blogs]
# WHERE (NOT (([blogs].[title] = '' OR [blogs].[title] IS NULL)))"