43 votes

Portée de Rails pour IS NOT NULL et is not empty/blank ?

J'ai la portée suivante :

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

Mais je veux aussi que les conditions disent "OR text_value IS NOT EMPTY" (ou quelque chose de ce genre).

Je ne veux pas sélectionner de lignes où text_value est vide/blank.

1voto

yivo Points 1591

Personnellement, je fais comme ça :

1) Ajouter aux initialisateurs

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) Ajoutez à votre modèle

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

Bonne chance !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X