빈입니다 DataMapper 행을 찾을 수/루비 :속성이 나는 다음과 같은 코드를 가지고
require 'data_mapper'
class Dataset
include DataMapper::Resource
property :id, Serial
property :name, String, :required => true
property :year, String, :required => true
end
DataMapper.setup(:default, "sqlite://#{Dir.pwd}/database.db")
DataMapper.finalize.auto_upgrade!
Dataset.all(:year => nil).each do |dataset|
puts dataset.inspect
puts
end
와 나는 year
속성이 비어있는 모든 행을 찾고 싶어요. 하지만이 스크립트를 실행하면 빈 출력이 나온다. 내가처럼 실행하면 : SQLite는 쉘이 쿼리를 실행
#<Dataset @id=178 @name="Supernatural" @year="2005">
나에게 빈 year
열 7 개 행을 제공합니다 :
Dataset.all(:year => "2005").each do |dataset|
puts dataset.inspect
puts
end
나는 올바른 출력을 얻을
sqlite> SELECT COUNT(`name`) FROM datasets WHERE `year` IS NULL;
COUNT(`name`)
-------------
7
무엇 내가 틀렸어?
당신이 빈 문자열 검색을 해봤에 널 (null)을 해결하기 위해 중 하나입니까? ': year => '''또는 테이블에 실제 NULL 값이 포함되어 있습니까? 솔직히'': required => true' 필드에서 NULL을 얻는 것은 이상한 일입니다. – AlexQueue
빈 문자열을 검색하는 것도 작동하지 않습니다. 전에 시도했습니다. 그리고 기능을 추가했기 때문에 응용 프로그램이 실행 된 후에이 필드를 추가했기 때문에 NULL 값을가집니다. 그리고이 코드는 데이터베이스를 마이그레이션하기로되어 있습니다. 따라서 아직 마이그레이션되지 않은 모든 행을 찾아야합니다. – Ps0ke