Rails не будет выполнять обратное преобразование для вас, вы должны сделать это самостоятельно. Я думаю, что вы можете сделать это так:
class User < ActiveRecord::Base
# Returns formatted user id:
#
# 1 => 'usr-001'
# 11 => 'usr-011'
# 111 => 'usr-111'
# 1111 => 'usr-1111'
#
def to_param
"usr-%03d" % id
end
def self.from_param(param)
# ruby strips leading zeros for us (e.g., '012'.to_i returns 12)
# but we need to remove 'usr-' prefix first
find(param[4..-1].to_i)
end
end
, а затем используйте его там, где вам нужно:
user = User.from_param params[:id]
Кроме того, посмотрите на to_param
документы . В описании и примерах четко указано, что этот метод используется для генерации URL-адресов, но разработчик - это тот, кто отвечает за поиск соответствующей записи по этому параметру.
Относительно форматирования строк вы можете найти дополнительную информацию в документах для метода String#%
и метода Kernel#format
, который он использует.