рдореИрдВ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд░реЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд░рддреНрди рд▓реЗ рдЖрдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рд░рддреНрди рдкрд░ рдмрд╣реБрдд рдХрдо рд░реВрд╕реА-рднрд╛рд╖рд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдм рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдХрд╡рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд▓реЗрдЦ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рд╣реИ рдФрд░ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдордгрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИред рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рдореИрдВ рдореВрд▓ рд╕реЗрдЯрдЕрдк рдХреЗ рдЪрд░рдгреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░реВрдБрдЧрд╛ред рдордгрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗред
рдбреЗрд╡рд┐рд╕ рдПрдХ рдорд╛рдгрд┐рдХ рд░рддреНрди рд╣реИ рдЬреЛ рд░реЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбреЗрд╡рд┐рд╕ рд╡рд╛рд░реНрдбрди рдордгрд┐ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рд░реИрдХ-рдЖрдзрд╛рд░рд┐рдд рд░реВрдмреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбреЗрд╡рд┐рд╕ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ:
- рд░реИрдХ рдЖрдзрд╛рд░рд┐рдд
- рдПрдХ рдкреВрд░реНрдг рд░реЗрд▓-рдЖрдзрд╛рд░рд┐рдд MVC рд╕рдорд╛рдзрд╛рди рд╣реИ;
- рдПрдХ рд╕рд╛рде рдХрдИ рдореЙрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ;
- рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░: рдХреЗрд╡рд▓ рд╡рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рддреЛ, рдЪрд▓реЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рд░реЗрд▓ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд┐рд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЯреВрдЯ рдЬрд╛рдПрдЧреАред
рдиреЛрдЯ : рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд░реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг 4.0.1 рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЪрд░рдг 1. рдордгрд┐ рдХреЛ рдордгрд┐ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
gem 'devise'
рдпрд╛ рд╕рдЯреАрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдВрдХреЗрдд (рдЕрдЧрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрд░реЗ рд▓рд┐рдП 4.0.1 рд░реЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)
gem 'devise', '3.2.2'
рдирдП рд░рддреНрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдЪрд▓рд╛рдПрдБ
bundle install
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рддреНрди рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ:
рд╡рд╛рд░реНрдбрди - рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЬреЛ рд░реИрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ;
orm_adapter -
рд░реВрдмреА ORM рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ;
bcrypt-ruby - рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЖрд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╣реИрд╢ рдлрдВрдХреНрд╢рди bcrypt () рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ;
thread_safe - рд░реВрдмреА рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЧреНрд░рд╣ рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ;
рд░реЗрд▓рд┐рдВрдЧ рдЖрдВрддрд░рд┐рдХ рд▓реЛрдб рдШрдЯрдХ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЛрдбрд░, рдкреНрд▓рдЧрдЗрдиреНрд╕, рдЬрдирд░реЗрдЯрд░, рдФрд░ рд░реЗрдХ рдХрд╛рд░реНрдпред
рдЪрд░рдг 2. рддреЛ, рдордгрд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдбреЗрд╡рд┐рд╕ рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЬрдирд░реЗрдЯрд░ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдЕрдм рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрдирд░реЗрдЯрд░ рдЪрд▓рд╛рдХрд░ Devise рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
rails generate devise:install
рдпрд╣ рдЬрдирд░реЗрдЯрд░ рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛, рдЬреЛ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдбреЗрд╡рд┐рд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмреЗрд╕ рд▓реЛрдХреЗрд▓ (рдЕрдВрдЧреНрд░реЗрдЬреА) рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рднреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╣рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдЧрд╛ред
рдЪрд░рдг 3. рдЪрд▓реЛ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж рдордгрд┐ рдХреА рдореВрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ
3.1ред рдЕрдм рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд░рдирдЯрдореНрд╕ рдХреЗ рд▓рд┐рдП рдореЗрд▓рд░ (рдкреНрд░реЗрд╖рдХ) рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрди рдХреЛ
рд╡рд┐рдиреНрдпрд╛рд╕ / рд╡рд╛рддрд╛рд╡рд░рдг / рд╡рд┐рдХрд╛рд╕.рдмреНрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдореВрд▓реНрдп рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
: рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рд╛рде
рд╣реЛрд╕реНрдЯ рдХрд░реЗрдВред
3.2ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЦрд╛рддреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдбреЗрд╡рд┐рд╕ рдЖрдЧреЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд░реНрдЧ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣
user_root_path рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рдореМрдЬреВрдж рд╣реИред рдЕрдиреНрдпрдерд╛, Devise root_path рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкрде рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реА рд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ / рдорд╛рд░реНрдЧреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
root 'home#index'
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореБрдЭрд╕реЗ рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ рдХрд┐ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рддрд░реНрдХрд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдкреЗрдЬ рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ / рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдорд╛рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВред
get 'persons/profile', as: 'user_root'
рдиреЛрдЯ :
1) рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
rails generate controller persons profile
2) рдирддреАрдЬрддрди, рдЬрдирд░реЗрдЯрд░ рдПрдХ
рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╡рд┐рдзрд┐ (рдХрд╛рд░реНрд░рд╡рд╛рдИ) рдХреЗ рд╕рд╛рде рдПрдХ
рд╡реНрдпрдХреНрддрд┐_рдХрдВрдЯреНрд░реЛрд▓рд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдмрдирд╛рдПрдЧрд╛, рд╕рд╛рде рд╣реА рдЗрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╢реНрдп рднреА рдмрдирд╛рдПрдЧрд╛ред
рдорд╛рд░реНрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдмрд╕ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:
bundle exec rake routes
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдЧрд▓рд╛ рд░рд╛рдЙрдЯрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
user_root GET /persons/profile(.:format) persons
рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП user_root_path
рд╣реЗрд▓реНрдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛
рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рднреА рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдк рдкреНрд░рд╡реЗрд╢ рдХреЗ рдмрд╛рдж рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
ApplicationController (
рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдирд┐рдпрдВрддреНрд░рдХреЛрдВ / application_controller.rb ) рдореЗрдВ
after_sign_in_path_for рдФрд░
after_sign_out_path_for рдХреЗ рдмрд╛рдж рдХреЗ рдореМрдЬреВрджрд╛ рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдкрд╕рдВрдж рдЖрдпрд╛:
def after_sign_in_path_for(resource) current_user_path end
рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ
рд╡рд░реНрддрдорд╛рди_рд╕реБрдкрд░_рдкрде рд╕рд╣рд╛рдпрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдкреГрд╖реНрда рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
def after_sign_out_path_for(resource_or_scope) request.referrer end
рд▓реЙрдЧ рдЖрдЙрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕реА рдкреГрд╖реНрда рдкрд░ рд░рд╣реЗрдЧрд╛ред
3.3ред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рд╕реВрдЪрдирд╛рдУрдВ рдФрд░ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
<p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p>
3.4ред рдпрджрд┐ рдЖрдк рд░реЗрд▓реНрд╕ рд╡рд░реНрдЬрди 3.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рд╣реЗрд░реЛрдХреВ рдкрд░ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдирд┐рдореНрди рд▓рд╛рдЗрди рдХреЛ
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ / рдПрдкреНрд▓рд┐рдХреЗрд╢рди. rb рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
config.assets.initialize_on_precompile = false
3.5ред рд╣рдо рдЕрдкрдиреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рдЙрдиреНрд╣реЗрдВ рдордгрд┐ рд╕реЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
rails generate devise:views
рдРрдк / рд╡реНрдпреВ / рдбреЗрд╡рд┐рд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЖрдкрдХреЛ
рдордгрд┐ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рднреА
рд╡реНрдпреВ рдлрд╛рдЗрд▓реНрд╕
рдорд┐рд▓реЗрдВрдЧреА ред рдЖрдк рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рд╕рдордЧреНрд░ рд╢реИрд▓реА рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЪрд░рдг 4. рдЕрдм рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдЬреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░реЗрдЧрд╛ред рд╣рдо рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣реЗрдВрдЧреЗред рдореЙрдбрд▓ рдХреЛ
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
rails generate devise User
рдпрд╣ рдЬрдирд░реЗрдЯрд░ рдПрдХ рдирдпрд╛ рдореЙрдбрд▓ рдмрдирд╛рдПрдЧрд╛ рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЖрдкрдХреЛ
рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдореЙрдбрд▓ / user.rb рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб
рдорд┐рд▓реЗрдЧрд╛ (рдХреЛрдб рдХреБрдЫ рд╕реНрд╡рд░реВрдкрд┐рдд рд╣реИ):
class User < ActiveRecord::Base
рдбреЗрд╡рд┐рд╕ рдХреЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ 10 рдореЙрдбреНрдпреВрд▓ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЗ рдкрд╛рд╕ 6 рдореЙрдбреНрдпреВрд▓ рдЬреБрдбрд╝реЗ рд╣реЛрдВрдЧреЗред рдЖрдк рдЗрд╕ рд╕реВрдЪреА рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдиреАрдЪреЗ рдЙрдкрд▓рдмреНрдз рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрддрд╛ рд╣реВрдВ:
1.
рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдереЗрдВрдЯрд┐рдХрдЯреЗрдмрд▓ :
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдФрд░ рд╕реНрдЯреЛрд░ рдХрд┐рдП рдЧрдП рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд▓реЙрдЧрд┐рди рдПрдХ POST рдЕрдиреБрд░реЛрдз рднреЗрдЬрдХрд░ рдпрд╛ HTTP рдмреЗрд╕рд┐рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
2.
рдУрдореНрдирд┐рдпреБрдерд▓ : рдУрдореЛрдирд┐рдпрд╛рде рд╕рдкреЛрд░реНрдЯ (
https://github.com/intridea/omniauth ) рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
3.
рдкреБрд╖реНрдЯрд┐ : рдкрдВрдЬреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдмрдирд╛рдП рдЧрдП рдЦрд╛рддреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
4.
рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп : рдЖрдкрдХреЛ рдПрдХ рднреВрд▓ рдЧрдП рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдХрд╡рд░реА рдирд┐рд░реНрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИред
5.
рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп : рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрдВрдЬреАрдХрд░рдг рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЦрд╛рддреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
6.
рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп : рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреБрдХреАрдЬрд╝ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдХреАрдЬрд╝ рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЯреЛрдХрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╡рд┐рд▓реЛрдкрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
7.
рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп : рдЗрдирдкреБрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рд░рдЦрддрд╛ рд╣реИ, рдЦрд╛рддреЗ рдХреЗ рд╕рдордп рдФрд░ рдЖрдИрдЯреА рдкрддреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реИред
8.
рд╕рдордпрдмрд╛рд╣реНрдп : рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕рддреНрд░ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░;
9.
рд╡реИрдз : рдИрдореЗрд▓ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
10. рд▓реЙрдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп: рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рдлрд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рдж рдЦрд╛рддреЗ рдХреЛ рд▓реЙрдХ рдХрд░рддрд╛ рд╣реИред рдЦрд╛рддреЗ рдХреЛ рдИрдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдпрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рдмрд╛рдж рдЕрдирд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд╛рде рд╣реА, рдКрдкрд░ рдЬреЛ рдХрдорд╛рдВрдб рд╣рдордиреЗ рдЪрд▓рд╛рдпрд╛ рд╣реИ, рд╡рд╣ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдФрд░ рдПрдХ рд░реВрдЯ рдмрдирд╛рдПрдЧрд╛ред рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
class DeviseCreateUsers < ActiveRecord::Migration def change create_table(:users) do |t|
рдпрд╣рд╛рдВ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ (рдХреЛрдб рдХреА рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐)ред рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреЗ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдХрд╛ рдирд╛рдо рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрд╡рдЪрди рдореЗрдВ (
ActiveRecord рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рдХреЗ рдЕрдиреБрд╕рд╛рд░)ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдирд┐рд░реНрдорд╛рдг рдкрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ 6 рдбреЗрд╡рд┐рд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝реАрд▓реНрдбреНрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред рдФрд░, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрдм рдЖрдк рдХрд┐рд╕реА рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдирд╕реБрдирд╛ рдХрд░рдирд╛ рднреА рди рднреВрд▓реЗрдВред
рдирд┐рдореНрди рдорд╛рд░реНрдЧ рдХреЛ
config / path.rb рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:
devise_for :users
рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдореМрдЬреВрджрд╛ рдорд╛рд░реНрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
bundle exec rake routes
рдЪрд░рдг 5. рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рдЖрд╡рд╢реНрдпрдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрд╛ред рдЕрдм рдЖрдкрдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдЧрд╛ред рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрдБ:
bundle exec rake db:migrate
рдЪрд░рдг 6. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЪреВрдВрдХрд┐ рдореЗрд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ
рдпреВрдирд┐рдХреЙрд░реНрди рд╕рд░реНрд╡рд░ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдк
рд╡реАрдмреНрд░рд┐рдХ рд╕рд░реНрд╡рд░ рдХреЗ рддрд╣рдд рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди
CTRL + C рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ:
rails server
рдЪрд░рдг 7. рд╣рдорд╛рд░рд╛ рдореЙрдбреНрдпреВрд▓ рдФрд░ рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдЕрдЧрд▓рд╛ рдЪрд░рдг рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рд▓реЙрдЧрд┐рди рдФрд░ рдкрдВрдЬреАрдХрд░рдг рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдирд╛ рд╣реИред рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
<% if user_signed_in? %> <span>, <%= current_user.email %></span> <%= link_to '', destroy_user_session_path, :method => :delete %> <% else %> <%= link_to '', new_user_session_path %> <%= link_to '', new_user_registration_path %> <% end %>
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд╕рд╛рдЗрдЯ рдкрд░ рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕реЗ "рд╣реИрд▓реЛ, [рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдореЗрд▓]" рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд▓реЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЕрднреА рддрдХ рд╕рд╛рдЗрдЯ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╛рд╕ рдореЗрдВ рджреЛ "рд▓реЙрдЧрд┐рди" рдФрд░ "рд░рдЬрд┐рд╕реНрдЯрд░" рд▓рд┐рдВрдХ рд╣реИрдВред рд╣рдо рдореМрдЬреВрджрд╛ рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЛ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдЪреМрдереЗ рдЪрд░рдг рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╕реВрдЪреА рдХреЛ рдирд┐рдореНрди рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣реЗрд▓реНрдкрд░ рдореЗрдВ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИ (рд╕рдмрд╕реЗ рдмрд╛рдПрдВ рд╕реНрддрдВрдн + '_рдкрде')
bundle exec rake routes
рдЪрд░рдг 8. рдпрд╣ рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ
рдХрд╛ рд╕рдордп рд╣реИ - рд╕рд╛рдЗрдЯ рдХреЗ рдХреБрдЫ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЕрдирдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдЖрджреЗрд╢ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
class OrdersController < ApplicationController before_filter :authenticate_user!, except => [:show, :index] def index
рдпрд╣рд╛рдВ, рдХреЛрдб рдореЗрдВ, рд╣рдо рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ
рдкрд╣рд▓реЗ_рдлрд┐рд▓реНрдЯрд░ рд╡рд┐рдзрд┐ рдХреЗ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗрд╡рд▓ рдСрд░реНрдбрд░ рдирд┐рд╖реНрдкрд╛рджрди (
рдСрд░реНрдбрд░ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рддрдХ рдкрд╣реБрдВрдЪ) рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рд╕рднреА рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдмрд╕ рд▓рд┐рдЦреЗрдВ:
before_filter :authenticate_user!
рдЙрдкрдпреЛрдЧреА рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА
рдбреЗрд╡рд┐рд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╕рд╣рд╛рдпрдХ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдиреАрдЪреЗ рджреЗрддрд╛ рд╣реВрдВред
рдЖрдк рдирд┐рдореНрди рд╕рд╣рд╛рдпрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди рдХреЗ рддрдереНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: user_signed_in?
рдЕрдЧрд▓реЗ рд╕рд╣рд╛рдпрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рд╛рдЗрдЯ рдкрд░ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╡рд╕реНрддреБ рдорд┐рд▓рддреА рд╣реИ current_user
рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдИрдореЗрд▓ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ current_user.email
рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рддрдХ рдкрд╣реБрдБрдЪ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ: user_session
рдпрд╣ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛, рдФрд░ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдореИрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЕрджреНрднреБрдд рдордгрд┐ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдХреЛрдИ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдХреЛрдИ рдХрдо рджрд┐рд▓рдЪрд╕реНрдк рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рддрд╛ред
рдкреНрд░рдпреБрдХреНрдд рд╕рд╛рд╣рд┐рддреНрдп рдХреА рд╕реВрдЪреА:
рд╕рд╛рдордЧреНрд░реА рдХреЗ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рддреНрди рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ -
github.com/plataformatec/devise , рд╣рдорд╛рд░реЗ рдХрд╕реНрдЯрдо рдЕрдиреБрдХреВрд▓рди рдЕрдиреБрднрд╡ рджреНрд╡рд╛рд░рд╛ рдкреВрд░рдХред