У меня есть модель bookmark
с атрибутом :url
. Мне нужно, чтобы он был сохранен в базе данных в правильном формате: с http://
или https://
префикс.Редактировать данные перед сохранением в базу данных
Так, в bookmarks_controller
я сделал before_filter
для create
действия:
class BookmarksController < ApplicationController
before_filter :standardise_urls, only: :create
.
.
.
def create
@bookmark = current_user.bookmarks.build(params[:bookmark])
if @bookmark.save
flash[:success] = "Bookmark created!"
redirect_to root_url
else
render 'static_pages/home'
end
end
.
.
.
private
def standardise_urls
if params[:bookmark][:url] != /https?:\/\/[a-zA-Z0-9\-\.]+\.[a-z]+/
params[:bookmark][:url] = "http://#{params[:bookmark][:url]}"
end
end
end
Но это не работает. Я хочу, чтобы он добавлял префикс http://
к ссылкам, у которых его нет, когда пользователь их добавляет. Но он продолжает добавлять префикс для всех созданных ссылок.
Я думаю, что ошибка заключается в повторении params[:bookmark][:url]
, но я не понимаю, как ее решить.
Также, правильно ли добавить этот фильтр в контроллер? Может быть, это должно быть на уровне модели? Или, может быть, лучше добавить префикс «на лету», создавая представление, поэтому я должен его там положить?
Большое спасибо!