tuple remove registers from first empty delete bigger sql ruby-on-rails postgresql scope

sql - remove - El alcance de Rails para IS NOT NULL y no está vacío/en blanco?



select bigger value sql (6)

Como señala Erwin, en este caso funcionará una simple text_value <> '''' .

scope :comments, where("text_value <> ''''")

(Rails 3 prefiere esta sintaxis de consulta para el scope , así como find , all , etc.) en lugar de un hash de opciones, por ejemplo :conditions => ... Este último está obsoleto en Rails 3.1 .)

En Rails 4, el segundo argumento debería ser un lambda en su lugar:

scope :comments, ->{ where("text_value <> ''''") }

Tengo el siguiente alcance:

scope :comments, :conditions => [''text_value IS NOT NULL'']

Pero también quiero que las condiciones digan "O text_value NO ESTÁ VACÍO" (o algo parecido).

No quiero seleccionar ninguna fila en la que text_value esté vacío / en blanco.


En Rails 4 puedes hacer

where.not(text_value: '''')


Personalmente lo estoy haciendo así:

1) Añadir a los inicializadores

class Arel::Attributes::Attribute # Encode column name like: `posts`.`author_id` def to_sql "`#{relation.table_name}`.`#{name}`" end def is_not_empty "#{to_sql} <> ''''" end end

2) Añadir a tu modelo.

scope :comments, -> { where(arel_table[:text_value].is_not_empty) }

¡Buena suerte!


Use text_value <> '''' para cubrir eficientemente ambos casos.

Solo será TRUE para un valor de text_value que no sea NULL ni empty .


carriles 4

scope :comments, -> { where.not(:text_value => nil) }


scope :comments, where("text_value <> ''''")