Rails3 Beginner - Как определить записи с определенным словом в строке? - PullRequest
0 голосов
/ 13 мая 2011

Я изо всех сил пытаюсь найти команду, которая позволяет мне идентифицировать эти записи в массиве, который содержит определенное слово, и задавался вопросом, может ли кто-нибудь указать мне правильное направление.

По сути, у меня есть имена в одном столбце и адреса в другом. Теперь я хотел бы ограничить данные только этими людьми в определенном городе, поэтому, например, я хочу показать всем тем, кто живет в Лондоне, то есть «Лондон» должен содержаться в их адресной строке.

Можно ли использовать функции WHERE и LIKE для этого?

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Можно использовать ключевое слово LIKE для получения такого рода информации, но было бы гораздо лучше, если бы вместо одного поля для хранения адреса вы использовали несколько:

 Users           Addresses             Countries
-------------   -------------------   -------------
 user_id         address_id            country_id
 address_id      country_id            titile
 full_name       city_id
                 street_and_number

В одной стране / городе много адресов. И вы можете иметь более одного человека, живущего в одном городе, или даже иметь один и тот же адрес.

В любом случае, это был бы намного лучший способ упорядочить ваши данные, тем более что LIKE действительно очень медленный.

P.S. строительные леса предназначены для быстрого создания прототипов, а не для производственного кода.

1 голос
/ 13 мая 2011

Сделайте что-то вроде этого:

def SomeModel < ActiveRecord::Base
  scope :contains_city,
    lambda { |city| where("some_models.address LIKE ?","%"+city+"%" ) }
end

#Usage:
records = some_instance_of_model.contains_city "London"
...