texto string_split separar por numero extraer digitos delimitada comas columnas caracter cadena buscar agregar sql ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

sql - string_split - Rieles: Cómo encontrar_por un campo que contiene una cierta cadena



string_split sql (5)

Con PostgreSQL también puede usar operadores de coincidencia :

Topic.where("name ~* ?", @search)

Tengo un modelo llamado Topic, que tiene un nombre como campo.

Entonces di que tengo un término que estoy buscando, apple.

Si hago un

Topic.find_by_name("apple")

Obtengo un registro con el nombre Apple. Eso está bien, pero ¿cómo cambio find_by_name para que pueda encontrar "apple juice" además de "apple", básicamente, encontrar nombres que contengan la consulta original o que coincidan exactamente con la consulta original?

Editar: Gracias por toda la respuesta. Supongo que debería haber sido un poco más claro antes, pero ¿y si quiero encontrarlo por un nombre de variable (obviamente no voy a querer encontrar el nombre "manzana" cada vez :))?

¿Cómo manipulo Topic.where para acomodar esto? Entonces algo así como ...

@topic = Topic.where(......., @name)


Creo que algo como esto debería funcionar:

Topic.where("name like ?", "%apple%")

Para acomodar su edición:

Topic.where("name like ?", "%#{@search}%")

Interpolación de cadenas básica, está usando el valor de @search dentro de la cadena %% , por lo que @search = "apple" luego termina con %apple%


No pongas la cadena directamente así. Se llama inyección SQL. En su lugar, debe usar .where :

Topic.where("name like ''?%'' ", params[:name])


Parece que en Rails 3 te gustaría usar el lugar donde:

Topic.where("name ILIKE ?", "%apple%")


Tratar

Topic.where("name like ?",''%apple%'') Topic.find(:all, :conditions => ["name like ?","%apple%"])