<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>по стопам webkill&#039;а &#187; devise</title>
	<atom:link href="http://blog.lukmus.ru/tag/devise/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lukmus.ru</link>
	<description>это наш химический дом для печальных жителей Земли</description>
	<lastBuildDate>Sat, 21 Oct 2023 19:10:13 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>areyouahuman на rails 3. альтернатива обычной капче</title>
		<link>http://blog.lukmus.ru/2012/10/05/areyouahuman-na-rails-3-alternativa-obyichnoy-kapche/</link>
		<comments>http://blog.lukmus.ru/2012/10/05/areyouahuman-na-rails-3-alternativa-obyichnoy-kapche/#comments</comments>
		<pubDate>Fri, 05 Oct 2012 11:59:13 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[AreYouAHuman]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[devise]]></category>
		<category><![CDATA[ruby on rails 3]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=1528</guid>
		<description><![CDATA[Современная капча под давлением программистов роботов-распознователей капчи мутировала уже во что-то непонятное, гугловскую капчу, я например, обновляю раз по 5 перед тем как смогу прочитать что там написано. Короче время привычной капчи заканчивается. Наступает время альтернативной. Например, есть такая штука как AreYouAHuman. Ниже будет показано как ее интегрировать в Rails 3 на примере Devise. установка [...]]]></description>
			<content:encoded><![CDATA[<p>Современная капча под давлением программистов роботов-распознователей капчи мутировала уже во что-то непонятное, гугловскую капчу, я например, обновляю раз по 5 перед тем как смогу прочитать что там написано. Короче время привычной капчи заканчивается. Наступает время альтернативной. Например, есть такая штука как <a rel="nofollow" href="http://areyouahuman.com/" target="_blank">AreYouAHuman</a>. Ниже будет показано как ее интегрировать в Rails 3 на примере Devise.<br />
<img class="aligncenter size-full wp-image-1529" title="dag" src="http://blog.lukmus.ru/wp-content/uploads/2012/10/dag.png" alt="" width="517" height="388" /><span id="more-1528"></span></p>
<h2>установка</h2>
<p>Для Ruby есть типо <a rel="nofollow" href="http://portal.areyouahuman.com/installation/ruby" target="_blank">инструкция</a> на офсайте, но я опишу немного по своему.<br />
Как обычно добавляем в Gemfile:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">gem 'ayah_integration'</pre></td></tr></table></div>

<p>и бандлим:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">bundle install</pre></td></tr></table></div>

<p>Теперь надо <a rel="nofollow" href="http://portal.areyouahuman.com/signup" target="_blank">зарегистрироваться на сайте</a> для получения ключей.</p>
<h2>интеграция в модель плагина Devise</h2>
<p>Предполагается, что уже есть <a href="http://blog.lukmus.ru/?p=1265">сгенерированная и настроенная модель Devise</a>. У меня модель называется User, а внедрять капчу я буду в форму восстановления пароля.</p>
<h3>интеграция в представление</h3>
<p>Если вы особо не мучали Devise генерирований различных представлений, то по умолчанию форма восстановления пароля лежит тут: <code>app/views/devise/passwords/new.html.erb</code>. Ее надо открыть и привести к виду:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">...
<span style="color:#006600; font-weight:bold;">&lt;%</span>ayah=<span style="color:#6666ff; font-weight:bold;">AYAH::Integration</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&lt;</span>publisher_key<span style="color:#006600; font-weight:bold;">&gt;</span>,<span style="color:#006600; font-weight:bold;">&lt;</span>scoring_key<span style="color:#006600; font-weight:bold;">&gt;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">%&gt;</span>
...
<span style="color:#006600; font-weight:bold;">&lt;%</span>= form_for<span style="color:#006600; font-weight:bold;">&#40;</span>resource,
  <span style="color:#ff3333; font-weight:bold;">:as</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> resource_name,
  <span style="color:#ff3333; font-weight:bold;">:url</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> password_path<span style="color:#006600; font-weight:bold;">&#40;</span>resource_name<span style="color:#006600; font-weight:bold;">&#41;</span>,
  <span style="color:#ff3333; font-weight:bold;">:html</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:method</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:post</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
...
<span style="color:#006600; font-weight:bold;">&lt;%</span>=ayah.<span style="color:#9900CC;">get_publisher_html</span>.<span style="color:#9900CC;">html_safe</span><span style="color:#006600; font-weight:bold;">%&gt;</span>
...
<span style="color:#006600; font-weight:bold;">&lt;%</span>end<span style="color:#006600; font-weight:bold;">%&gt;</span>
...</pre></td></tr></table></div>

<p>У AYAH есть 2 вида капчи:</p>
<ul>
<li>Lightbox &#8211; выводиться в модальном окне после нажатия кнопки &#8216;отправить&#8217; (как в комментариях в этом блоге)</li>
<li>Embedded &#8211; сразу видна в форме</li>
</ul>
<p>Так вот в зависимости от того, какой вид отображения AYAH вы выбрали в настройках, капча в форме восстановления пароля будет либо видна после события <code>submit</code>, либо сразу.</p>
<h3>интеграция в контроллер</h3>
<p>Чтобы соорудить свою обработку события &#8216;восстановление пароля&#8217; в Devise нужно сделать свой контроллер.<br />
В директории <code>app/controllers</code> нужно сделать файл <code>passwords_controller.rb</code>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> PasswordsController <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">Devise::PasswordsController</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> create
    session_secret = params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'session_secret'</span><span style="color:#006600; font-weight:bold;">&#93;</span>
    ayah = <span style="color:#6666ff; font-weight:bold;">AYAH::Integration</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&lt;</span>publisher_key<span style="color:#006600; font-weight:bold;">&gt;</span>,<span style="color:#006600; font-weight:bold;">&lt;</span>scoring_key<span style="color:#006600; font-weight:bold;">&gt;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    ayah_passed = ayah.<span style="color:#9900CC;">score_result</span><span style="color:#006600; font-weight:bold;">&#40;</span>session_secret, request.<span style="color:#9900CC;">remote_ip</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">if</span> ayah_passed
      <span style="color:#9966CC; font-weight:bold;">super</span>
    <span style="color:#9966CC; font-weight:bold;">else</span>
      respond_to <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span><span style="color:#CC0066; font-weight:bold;">format</span><span style="color:#006600; font-weight:bold;">|</span>
        <span style="color:#CC0066; font-weight:bold;">format</span>.<span style="color:#9900CC;">html</span> <span style="color:#006600; font-weight:bold;">&#123;</span> redirect_to new_user_password_path, notice: <span style="color:#996600;">'Invalid CAPTCHA'</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Я тут не слишком заморачивался и вывел ошибку капчи в <code>notice</code>, хотя по нормальному ее, конечно, надо было бы добавить к ошибкам модели devise.</p>
<h3>добавление контроллера в routes.rb</h3>
<p>Последним шагом надо обозначить в <code>config/routes.rb</code>, что для passwords имеется специальный контроллер:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">...
<span style="color:#9900CC;">devise_for</span> <span style="color:#ff3333; font-weight:bold;">:users</span>, <span style="color:#ff3333; font-weight:bold;">:controllers</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:passwords</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;passwords&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
...</pre></td></tr></table></div>

<p>Надо не забывать, что после изменения <code>routes.rb</code> надо перезапустить WEBrick.</p>
<h2>Итого</h2>
<p>Многие говорят, что такую капчу роботу легче взломать, чем обычную, т.к. тут ограниченный набор картинок. Это мнение во многом справедливо, однако, современная невзламываемая капча количеством и сложностью своих манипуляций с текстом стремительно мчиться к маразму, экстенсивное развитие уже не приносит ожидаемого результата. Чем сложнее будут эффекты преобразований, тем меньше будет преймущество человека перед роботом в разгадывании этих иероглифов.<br />
Капчи подобные AYAH имеют временнУю фору &#8211; пока они станут настолько популярными, чтобы ими заинтересовались хакеры, они уже достаточно смогут пополнить базу своих картинок, игр и т.д., а быть может и эволюционировать до алгоритмов автоматической генерации игр/картинок, я имею ввиду генерации сколько угодно большого количества разных, например, ламп или бутербродов (различия не по цвету, а по форме и содержанию).<br />
Разработчик AYAH обещал в скором времени <a rel="nofollow" href="http://support.areyouahuman.com/customer/portal/articles/755542-can-we-translate-the-user-interface-or-use-different-languages-" target="_blank">добавить многоязычность интерфейса</a>, так что скоро возможно существенное расширение поля применения.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2012/10/dag.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2012/10/05/areyouahuman-na-rails-3-alternativa-obyichnoy-kapche/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ROR 3. Devise. Управление пользователями</title>
		<link>http://blog.lukmus.ru/2012/03/23/ror-3-devise-upravlenie-polzovatelyami/</link>
		<comments>http://blog.lukmus.ru/2012/03/23/ror-3-devise-upravlenie-polzovatelyami/#comments</comments>
		<pubDate>Fri, 23 Mar 2012 06:21:06 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[devise]]></category>
		<category><![CDATA[ROR]]></category>
		<category><![CDATA[ROR 3]]></category>
		<category><![CDATA[ruby on rails 3]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[управление пользователями]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=1265</guid>
		<description><![CDATA[Сейчас мало таких сайтов, где не нужны были бы пользователи, точнее модель пользователей. Раньше, я как дурак, писал эту модель вручную, иногда, конечно, иначе и нельзя было поступить. А недавно я открыл для себя гем Devise для Rails, который в большинстве случаев избавляет от необходимости прописывать логику управления пользователями самому. Все, что я опишу дальше [...]]]></description>
			<content:encoded><![CDATA[<p>Сейчас мало таких сайтов, где не нужны были бы пользователи, точнее модель пользователей. Раньше, я как дурак, писал эту модель вручную, иногда, конечно, иначе и нельзя было поступить. А недавно я открыл для себя гем <a rel="nofollow" href="https://github.com/plataformatec/devise" target="_blank">Devise</a> для Rails, который в большинстве случаев избавляет от необходимости прописывать логику управления пользователями самому.<br />
<img class="aligncenter size-full wp-image-1267" title="berlin" src="http://blog.lukmus.ru/wp-content/uploads/2012/03/berlin.png" alt="" width="517" height="323" /><span id="more-1265"></span>Все, что я опишу дальше есть как на офстранице гема, так и в этих видео (русская версия Railscasts):</p>
<ol>
<li><a title="начало работы с devise" href="http://vimeo.com/14698174" target="_blank" rel="nofollow" >введение в devise</a></li>
<li><a href="http://vimeo.com/15056344" target="_blank" rel="nofollow" >настройка devise</a></li>
</ol>
<p>Все нижепроделанное относиться к RoR версии выше 3.0.1.</p>
<h2>установка</h2>
<p>Сначала, как обычно, дописываем в <code>Gemfile</code>:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">gem 'devise'</pre></td></tr></table></div>

<p>и далее опять же:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">bundle install</pre></td></tr></table></div>

<p>Теперь надо сгенерировать/интегрировать/спарить/инсталировать/и т.д. rails-приложение и devise:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">rails generate devise:install</pre></td></tr></table></div>

<p>После этого devise напишет мол надо настроить mailer и домашнюю страницу (<code>root_url</code>). Для режима development настроить mailer можно прописав в <code>config/environments/development.rb</code> опцию:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;">config.<span style="color:#9900CC;">action_mailer</span>.<span style="color:#9900CC;">default_url_options</span> =<span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:host</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'localhost:3000'</span> <span style="color:#006600; font-weight:bold;">&#125;</span></pre></td></tr></table></div>

<p>Далее надо сгенерировать модель пользователей для Devise и выполнить созданные миграции:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">rails generate devise User
rake db:migrate</pre></td></tr></table></div>

<h2>настройка и эксплуатация</h2>
<h3>маршрутизация</h3>
<p>После установки devise пропишет свои особые маршруты. Строка в <code>config/routes.rb</code> вида:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;">devise_for <span style="color:#ff3333; font-weight:bold;">:users</span></pre></td></tr></table></div>

<p>мало о чем скажет, поэтому посмотреть маршруты devise можно так:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">rake routes
        new_user_session GET    <span style="color: #000000; font-weight: bold;">/</span>users<span style="color: #000000; font-weight: bold;">/</span>sign_in<span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
            user_session POST   <span style="color: #000000; font-weight: bold;">/</span>users<span style="color: #000000; font-weight: bold;">/</span>sign_in<span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
    destroy_user_session DELETE <span style="color: #000000; font-weight: bold;">/</span>users<span style="color: #000000; font-weight: bold;">/</span>sign_out<span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
           user_password POST   <span style="color: #000000; font-weight: bold;">/</span>users<span style="color: #000000; font-weight: bold;">/</span>password<span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
       new_user_password GET    <span style="color: #000000; font-weight: bold;">/</span>users<span style="color: #000000; font-weight: bold;">/</span>password<span style="color: #000000; font-weight: bold;">/</span>new<span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
      edit_user_password GET    <span style="color: #000000; font-weight: bold;">/</span>users<span style="color: #000000; font-weight: bold;">/</span>password<span style="color: #000000; font-weight: bold;">/</span>edit<span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                         PUT    <span style="color: #000000; font-weight: bold;">/</span>users<span style="color: #000000; font-weight: bold;">/</span>password<span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
cancel_user_registration GET    <span style="color: #000000; font-weight: bold;">/</span>users<span style="color: #000000; font-weight: bold;">/</span>cancel<span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
       user_registration POST   <span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">users</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
   new_user_registration GET    <span style="color: #000000; font-weight: bold;">/</span>users<span style="color: #000000; font-weight: bold;">/</span>sign_up<span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
  edit_user_registration GET    <span style="color: #000000; font-weight: bold;">/</span>users<span style="color: #000000; font-weight: bold;">/</span>edit<span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                         PUT    <span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">users</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                         DELETE <span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">users</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>.:format<span style="color: #7a0874; font-weight: bold;">&#41;</span>
...</pre></td></tr></table></div>

<p>Соответственно в представлении, например, ссылка на регистрацию будет выглядеть как:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="rails" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&lt;%</span>=<span style="color:#5A0A0A; font-weight:bold;">link_to</span> <span style="color:#996600;">'Регистрация'</span>, new_user_registration_path <span style="color:#006600; font-weight:bold;">%&gt;</span></pre></td></tr></table></div>

<p>а на вход:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="rails" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&lt;%</span>=<span style="color:#5A0A0A; font-weight:bold;">link_to</span> <span style="color:#996600;">'Войти'</span>, new_user_session_path<span style="color:#006600; font-weight:bold;">%&gt;</span></pre></td></tr></table></div>

<p>Стандартные пути можно изменить подкорректировав <code>config/routes.rb</code>, используя опцию <code>path_names</code>, например, для изменения пути регистрации изменения будут выглядеть так:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">devise_for <span style="color:#ff3333; font-weight:bold;">:users</span>, <span style="color:#ff3333; font-weight:bold;">:path_names</span><span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#006600; font-weight:bold;">&#123;</span>sign_up: <span style="color:#996600;">'register'</span><span style="color:#006600; font-weight:bold;">&#125;</span></pre></td></tr></table></div>

<h3>методы</h3>
<p>Также в первом видео еще рассказали метод, как узнать авторизован ли пользователь:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">user_signed_in?</pre></td></tr></table></div>

<p>и, видимо, экземпляр класса модели User для текущего пользователя <code>current_user</code>, которая работает также как и экземпляр любой другой модели, например, узнать E-mail текущего авторизованного пользователя можно так:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;">current_user.<span style="color:#9900CC;">email</span></pre></td></tr></table></div>

<h3>фильтр</h3>
<p>Еще один важный момент в начале второго видео про before_filter. Чтобы узнать недопустить неавторизованного посетителя до экшенов, нужно использовать фильтр:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;">before_filter <span style="color:#ff3333; font-weight:bold;">:authenticate_user</span>!</pre></td></tr></table></div>

<p>Он будет перенаправлять на страницу входа.</p>
<h3>настройка представлений</h3>
<p>Для того, чтобы иметь возможность редактировать представления devise их нужно привести к обычному виду файлов представлений:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">rails g devise:views
      create  app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>_links.erb
      invoke  form_for
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>confirmations
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>confirmations<span style="color: #000000; font-weight: bold;">/</span>new.html.erb
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>passwords
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>passwords<span style="color: #000000; font-weight: bold;">/</span>edit.html.erb
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>passwords<span style="color: #000000; font-weight: bold;">/</span>new.html.erb
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>registrations
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>registrations<span style="color: #000000; font-weight: bold;">/</span>edit.html.erb
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>registrations<span style="color: #000000; font-weight: bold;">/</span>new.html.erb
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>sessions
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>sessions<span style="color: #000000; font-weight: bold;">/</span>new.html.erb
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>unlocks
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>unlocks<span style="color: #000000; font-weight: bold;">/</span>new.html.erb
      invoke  erb
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>mailer
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>mailer<span style="color: #000000; font-weight: bold;">/</span>confirmation_instructions.html.erb
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>mailer<span style="color: #000000; font-weight: bold;">/</span>reset_password_instructions.html.erb
      create    app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>devise<span style="color: #000000; font-weight: bold;">/</span>mailer<span style="color: #000000; font-weight: bold;">/</span>unlock_instructions.html.erb</pre></td></tr></table></div>

<h3>сообщения об ошибках</h3>
<p>Все сообщения devise храняться в YML-файлах локалей, по умолчанию это <code>config/locales/devise.en.yml</code>. Для добавления своей локали нужно создать файл с аналогичным именем, например, <code>config/locales/devise.ru.yml</code>.<br />
Скачать переведенные на другие языки (в т.ч. русский) локали devise можно тут: <a rel="nofollow" href="https://github.com/plataformatec/devise/wiki/I18n" target="_blank">https://github.com/plataformatec/devise/wiki/I18n</a></p>
<h3>валидация и прочие настройки</h3>
<p>Настройки валидации, как и все остальные для этого гема, находятся в <code>config/initializers/devise.rb</code>. Отключить стандартную валидацию devise можно убрав модуль <code>:validatable</code> из модели, в данном случае <code>User</code>.<br />
А вообще в devise вагон других настроек, например, теже ключи аутентификации, а которых говорят в конце второго видео, настраиваются все в том же <code>config/initializers/devise.rb</code>.<br />
Подробнее о настройках и прочих заморочках этого гема:</p>
<ol>
<li> <a href="https://github.com/plataformatec/devise" target="_blank" rel="nofollow" >офстраница</a></li>
<li> <a href="https://github.com/plataformatec/devise/wiki" target="_blank" rel="nofollow" >вики</a></li>
<li> <a href="http://rubydoc.info/github/plataformatec/devise/master/frames" target="_blank" rel="nofollow" >rubydoc</a></li>
</ol>
<p><meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2012/03/berlin.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2012/03/23/ror-3-devise-upravlenie-polzovatelyami/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
