Проверка на совпадение с regexp


(МАКСИМ МАЙОРОВ) #1

Привет,
привожу это здесь для вашей потехи, ибо у меня очередной затуп,
прикрутил omniauth от fb и vk, если юзер вошёл через социальную сеть, в поле comment.commenter пишу ссылку на профиль в соц. сети вместо мыла. Дело за малым, проверить что лежит в comment.commenter, и если это http://, выводить в link_to, а если мыло, просто писАть. .match не работает, пробовал так:

<% str = comment.commenter %>
 <%= link_to comment.commenter , comment.commenter if str.match(regexp) %>

Этот код не работает, интерпретатор спрашивает, может вы имели ввиду catch?


(МАКСИМ МАЙОРОВ) #2

Не отвечайте, этот путь в никуда, надо писать имя в ссылке. Подскажите лучше, как достать user.name зная id. Насколько это приемлимо, для каждого комментария дёргать бд, кто нибудь так делал?

Может лучше сразу писать в comment.commenter, ссылку на профиль и name, чем потом дёргать?


(МАКСИМ МАЙОРОВ) #3

Можно закрывать тему. У меня в comment есть поле user_id, почему то пустое, попробовал забить туда id пользователя и все его данные стали доступны. Ещё учиться и учиться.


#4

Я не вполне щас врубаюсь, что именно ты делаешь, конечно… но, если врубаюсь хоть чуть-чуть и у тебя во вьюхе действительно присутствует филд user_id… то очень внимательно рассмотри возможность убрать его оттуда, ибо делать ему там ровно нех. И не вздумай играть с hidden field и подставлять в него переменную, вот это реально путь в /dev/null, т.е. вникуда. Работай с user_id на уровне контроллера, все, что необходимо, у него и так уже есть, “без полей”. Как-то так (for example only):

current_user.blablabla.find_by(id: params[:id])

или варианты.


(МАКСИМ МАЙОРОВ) #5

Да там это не нужно уже. Вопрос бы от недостатка понимания того, что происходит. Все поля user доступны во вьюхе. Таким образом: comment.user.field