Ответ 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}%"})
Каков синтаксис для Ruby on Rails? Это то, что я пытаюсь сделать:
Я пытаюсь найти всю фамилию из таблицы, которая начинается с egm, поэтому что-то like %egm%
. Я знаю, как это сделать, используя find_by_sql, но просто любопытно узнать путь Ruby.
s = Person.find_by_last_name('nan%')
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}%"})
Person.where('name LIKE ?', '%egm%').all
Чтобы развернуть бит, методы find_by_X
используют оператор =
, поэтому вы не захотите использовать их для аналогичного условия. Путь "Rails" подразумевает использование некоторого количества SQL внутри метода where, как показано в других ответах. То же самое можно было бы применить, если вы пытаетесь отсортировать результаты с помощью метода заказа.