I have the following scope:
scope :comments, :conditions => ['text_value IS NOT NULL']
But I also want the conditions to say "OR text_value IS NOT EMPTY" (or something to that effect).
I don't want to select any rows where text_value
is empty/blank.
In Rails 4 you can do
where.not(text_value: '')
As Erwin points out, a simple text_value <> ''
comparison will work in this case.
scope :comments, where("text_value <> ''")
(Rails 3 prefers this query syntax for scope
—as well as find
, all
, etc.—rather than an options hash e.g. :conditions => ...
. The latter is deprecated in Rails 3.1.)
In Rails 4, the second argument should be a lambda instead:
scope :comments, ->{ where("text_value <> ''") }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With