Still unsolved. However != seems to work for integers but not strings.
!= is what you want (except if you testing whether something is not
NULL, if you want your query to also return rows where promotion is
NULL then you will need to change your query). Is promotion a boolean
attribute? If so then you should put ["foo != ?", true] and let
activerecord handle the mapping of true/false to whatever value is
stored in the database.