ben

OMÜ , Bilgisayar Mühendisliği, 13'

2 Mart 2015 Pazartesi

devise

Projemizi olusturup scanfold ile model ekleyelim. Amacımız projeye giriş oturumu olusturmak. editor olarak sublimeText kullanılcak. kurulu değilse:

$sudo apt-get install sublime-text

sublime acmak için : #subl .
 
$ rails new DeviseGem 
$ cd DeviseGem
$ bundle 
$ rails generate scaffold Post title:string context:text
$ rake db:migrate
$ subl .

config/routes.rb   dosyasına aşağıdaki komutu ekleyelim
       root 'posts#index'

$rails s   ile çalıştırıp  bir iki tane veri ekleyelim

Gelelim Devise modeline,

Gemfile dosyasına:     gem 'devise'

$ bundle
$ rails generate devise:install 
$rails generate devise User  
$rake db:migrate





 

app/controller/post_controller.rb

     before_action :authenticate_user!

   Bu komut kullanıcı giriş yapamadan post modeliyle alakalı hiç bi işlem yapamasını engeller

$rails s ile çalıştırıp bakalım:

 

Ek bilgi:

* user_signed_in?       Kullanıcı giriş yaptımı? true/false döner
* current_user            Giriş yapan kullanıcı bilgilerini getirir.


Peki giriş yapan kişi nasıl çıkış yapacak? Bunun için layout/application.html.erb

<% if user_signed_in? %>
  <li>
  <%= link_to('Çıkış', destroy_user_session_path, :method => 'delete') %>       
  </li>
<% end %>


Devise arayüzünü değiştirmek istersek gemde kullanılan sayfaları projemize eklememiz gerek

$ rails generate devise:views

app/view/devise/sessions/new.html.erb sayfası oturum giriş sayfası
app/view/devise/registration/new.html.erb sayfası kullanıcı oluşturma sayfası


giriş sayfasını değiştirelim:

 

Controllerda değişiklik yapmak istersek, örneğin user modeline yeni bi alan ekleyip kayıt esnasında bu bilginin de olmasını istersek bu controllerda düzenleme yapmak durumundayız

$ rails generate devise:controllers users 

Modelimize cinsiyet bilgisi ekleyelim

registration/new.html.rb  ve edit.html.rb  de alan ekleyelim:

  <div class="field">
    <%= f.label :cins %><br />
    <%= f.text_field :cins %>
  </div>






Sign up dersek cinsiyet bilgimizi eklemez bunun için kontrollarda düzenleme yapmamaız gerekiyor.

Controlların altına registrations_controller.rb  dosyası oluşturalım ve içeriğini burdan kopyalayalım.

config/routes.rb

  devise_for :users, :path_names => { :sign_up => "register" },:controllers => {:registrations => "registrations"}



dosya içerisindeki sign_up_params ve  account_update_params methodlarının içerisine;

    params.require(:user).permit(:cins, :password, :password_confirmation, :current_password, :email)

Sign up yaptımızda bakalım cinsiyet bilgisi eklenmişmi? Rails consola gidip bakalım:

$ rails c
$ User.last

cinsiyet bilgisi eklendi, arayuzde ufak bi değişiklikle gösterebiliriz. post.index sayfasında gösterelim.

<%=current_user.cins%>


projeyi burdan indriebilirsiniz