2013-09-18 1 views
2

У меня есть модель ticket.rb. Эта модель имеет: номер столбца. Я решил сделать метод, который должен искать билеты в базе данных с помощью первых 7 цифр номера билета. Я не могу понять, как сделать запрос Active Record в базе данных для достижения моей цели. Я попыталсяКак сделать запрос активной записи, который позволяет найти часть стоимости

ticket = Ticket.where("(/^\S{7}) number = ?", "#{n}") 

, но это не имеет никакого смысла, искал ответ в течение двух дней.

+0

Вы пробовали оператор в вашем запросе –

+0

Да, оператор LIKE - это то, что я искал, спасибо за консультацию –

ответ

1

Миса,

Это следует сделать это:

# Makes numbers like '123' become '0000123' 
# or takes first 7 digits if number is longer than 7 digits: 
n = sprintf("%07d", n).first(7) 

# Searches for anything starting with those 7 digits. 
tickets = Ticket.where("number like '#{n}%'") 

Если вы думаете, что есть только один такой билет в БД, просто сделать find_by вместо where:

ticket = Ticket.find_by("number like '#{n}%'") 

Если ваш number Поле - это не строка, а номер, вам нужно будет набрать букву:

ticket = Ticket.find_by("CAST(number AS varchar) like '#{n}%'") 

Дайте мне знать, если вам нужна дополнительная помощь.

Смежные вопросы