В журналах говорится, что вы пытаетесь получить доступ к атрибуту id
пустого объекта.
NoMethodError (undefined method id' for nil:NilClass)
У вас есть строка, в которой используется пользователь, выше, чем строка, в которой пользователь определен
Попробуйте это:
def function(user)
@user = user
attachments['example.pdf'] = File.read("public/#{@user.id}_file.pdf")
mail :subject => 'example', to: user.email, from: 'invoice@domain.com', track_opens: true
end
Обновлено.
Если вы передаете пользователя в качестве аргумента функции, тогда нет смысласоздайте для него переменную.
def function(user)
attachments['example.pdf'] = File.read("public/#{user.id}_file.pdf")
mail :subject => 'example', to: user.email, from: 'invoice@domain.com', track_opens: true
end