Как и где условие в рубине

Каков синтаксис для Ruby on Rails? Это то, что я пытаюсь сделать:

Я пытаюсь найти всю фамилию из таблицы, которая начинается с egm, поэтому что-то like %egm%. Я знаю, как это сделать, используя find_by_sql, но просто любопытно узнать путь Ruby.

s = Person.find_by_last_name('nan%')

Ответ 1

l_name_var = "nan"
Person.where("people.last_name LIKE :l_name", {:l_name => "#{l_name_var}%"})

или в вашем случае

l_name_var = "egm"
Person.where("people.last_name LIKE :l_name", {:l_name => "%#{l_name_var}%"})

Ответ 2

Person.where('name LIKE ?', '%egm%').all

Ответ 3

Чтобы развернуть бит, методы find_by_X используют оператор =, поэтому вы не захотите использовать их для аналогичного условия. Путь "Rails" подразумевает использование некоторого количества SQL внутри метода where, как показано в других ответах. То же самое можно было бы применить, если вы пытаетесь отсортировать результаты с помощью метода заказа.