Standardowe łańcuchy SQL używają pojedynczych cudzysłowów, podwójne cudzysłowy są dla identyfikatorów (takich jak nazwy tabel i kolumn); PostgreSQL jest tutaj zgodny ze standardem, MySQL i SQLite są mniej rygorystyczne, inne bazy danych robią inne rzeczy z różnym stopniem rygorystyczności. W każdym razie pojedyncze cudzysłowy dla literałów ciągu SQL powinny działać wszędzie tak samo.
Używasz podwójnych cudzysłowów w ciągu SQL:
@holidays = Holiday.find(:all, :conditions => 'state = "requested"')
#------------------------------------------------------^---------^
Musisz pojedyncze cudzysłowy:
@holidays = Holiday.find(:all, :conditions => %q{state = 'requested'})
lub zmodernizuj go i pozwól ActiveRecord zająć się cytowaniem:
@holidays = Holiday.where(:state => 'requested')
Prawdopodobnie będziesz musiał również poprawić cytat w tym przypadku:
@holidays = Holiday.find(:all, :conditions => ["approver_id = #{current_user.id}", "state = requested"])
Ponownie, modernizacja jest najłatwiejszym sposobem:
@holidays = Holiday.where(:approver_id => current_user.id, :state => 'requested')
Zgaduję, że programujesz na SQLite, ale wdrażasz na PostgreSQL. To zły pomysł, zawsze rozwijaj i wdrażaj na tym samym stosie.