嗨!各位朋友大家好,打給後,歹嘎吼,胎尬喉,我是阿圓,一樣有請今天的one piece:
雖然前幾天跟各位講了 model 關聯性,但想了想,還是忍不住跟大家介紹 devise 這個超好用的 gem !
首先先來說說什麼是 gem ,其實就是套件,用概觀的角度來比喻:
如果你是魔獸世界的玩家,就是'插件'; 如果你是 Minecraft 的玩家,就是'模組';如果你是跑跑卡丁車的玩家,那就是加裝的氮氣瓶,或是其他的功能。如果上面你都沒有玩的話,就是「基於遊戲之上,玩家們自己做出來讓遊戲過程更加有趣、方便的功能」。
而對於 Ruby on Rails 工程師來說,這個就叫做 gem,就是他人寫好的,讓開發過程更快速、方便的套件。
而 devise 是一個被引用的次數高達八千萬,GitHub 星星數有兩萬,超級好用的 gem !
為什麼這麼好用,先來回想一下我們之前光做一個管理者系統,要做的事情:
超~多事情,這還是比較簡單的狀況,若今天這是一個大專案,使用者可能還要收發驗證信啦,設定密碼輸入幾次要被鎖帳號啦...,等等等;而你想得到的這些,devise 都幫你做好了!以下就讓我來跟大家介紹吧:
(其實在github的內容中寫的蠻清楚的,若我講的不清楚,也可以去那邊看?)
Devise由下方十個 modules 建成,分別對應了不同的功能:
將gem devise安裝好後,在終端機打下下面指令:
$ rails generate devise:install
若有正常安裝,終端機會看到下面的訊息:
(其實就是告訴你,有些東西要設定!)
用中文翻譯大概是:
config/environments/development.rb
,設定mailer寄送者的預設路徑(ex: config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
)(可更換成自己的網址)config/routes.rb
有設定root_path!app/views/layouts/application.html.erb
,有下面兩行,可以印出通知: <p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
rails g devise:views
$ rails g devise User #user是model的名稱
#跟一般建立model的方式很像:
$ rails g model User
在使用者登入、變更密碼、變更信箱後預設轉址到user_root_path,可以去routes裡面做設定更改:
get '/users' => 'users#index', as: :user_root # creates user_root_path
namespace :user do
root 'users#index' # creates user_root_path
end
§§§ 如果沒有設定,會轉到root_path,所以一開始需要設定根目錄的path §§§
也可以在application裡覆寫after_sign_in_path_for
,after_sign_out_path_for
這兩個方法,來在轉址的時候做一點事。
可以翻翻文件裡提供的例子
def after_sign_in_path_for(resource)
stored_location_for(resource) ||
if resource.is_a?(User) && resource.can_publish?
publisher_url
else
super
end
end
§§§§ 上面的store_location_for
,也是Devise做好的方法,詳細請點我?§§§§
明天來說說 devise 提供的好用 helper,感謝各位看到這邊,若有任何建議,請各位不吝指教!我們明天見!