※item гэсэн модел өмнө нь үүсгэсэн байсан.
※Доорх мэдээллийг яаруу бичсэн тул зарим нэг дэс дараалал өөрчлөгдсөн байвал өршөөж ажаам уу m(_ _)m
Орчин
- CentOS release 6.5
- ruby (2.1.1p76)
- rails (4.2.4)
- rails суулгах заавар (version зөрж байгаа!)
- mysql (5.6)
- devise (3.5.2)
- cancancan (1.13.1)
- rails_admin (0.7.0)
- gem 'devise'
- gem 'cancancan'
- gem 'rails_admin'
3. devise - тохиргоо
- rails g devise:install
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
5. app/views/layouts/application.html.erb ийг өөрчилнө.
<%= yield %> ийн дээд талд оруулж өгнө
<% if notice %>
<p class="alert alert-notice"><%= notice %></p>
<% end %>
<% if alert %>
<p class="alert alert-error"><%= alert %></p>
<% end %>
6. Devise ийн хэрэглэгч болон role ийг үүсгэнэ.
- rails g devise user
- rails g model role name
- rails g migration CreateJoinTableUserRole user role
- rake db:migrate
has_and_belongs_to_many :roles
def has_role?(name)
self.roles.where(name: name).length > 0
end
8. app/models/role.rb моделийг өөрчилнө
has_and_belongs_to_many :users
9. cancan - ийн тохиргоо
- rails g cancan:ability
def initialize(user)
if user.has_role?('superadmin')
can :manage, :all
elsif user.has_role?('admin')
can :read, :all
can :access, :rails_admin
can :dashboard
elsif user.has_role?('manager')
can :read, :all
can :access, :rails_admin
can :dashboard
else
can :read, Item
end
end
Дээрх тохиргоог оруулж өгсөнөөр admin, superadmin, manager зэрэг хэрэглэгчийн role - с хамаарч
can болон cannot-оор хэрэглэгчидийн эрхийг зааж өгөх боломжтой.
Дээрх тохиргоог item модел дээр туршилтаар оруулсан болно.
11. rails_admin ийг тохиргоо
- rails g rails_admin:install
- rake db:migrate
Доорх мөрнүүд коммент болсон байгаа бөгөөд. Комментыг авах
# config.authenticate_with do
# warden.authenticate! scope: :user
# end
# config.current_user_method(&:current_user)
болон
# config.authorize_with :cancan
13. config/environments/development.rb ийг өөрчилж имэйлийн тохиргоог хийнэ.
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => 'smtp.gmail.com',
:port => 587,
:authentication => :plain,
:user_name => 'имэйл',
:password => 'имэйлий нууц үг'
}
14. config/initializers/rails_admin.rb ийг өөрчилнө
config.sign_out_via = :delete ийг config.sign_out_via = :get болгох
15. db/migrate/*_devise_create_users.rb ийг өөрчлөх
Доорх мөрнүүд коммент болсон байгаа бөгөөд. Комментыг авах
## Confirmable
# t.string :confirmation_token
# t.datetime :confirmed_at
# t.datetime :confirmation_sent_at
# t.string :unconfirmed_email # Only if using reconfirmable
16. app/models/user.rb ийг өөрчлөх
Доорх шиг , :confirmable ийг нэмж өгнө
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
17. Доорх өгөгдлүүдийг оруулж өгнө
- Item
- User
- Role
18. Rails ийг ачаалах
rails s -b 0.0.0.0
Superadmin role - р нэвтрэх үеийн дэлгэц
manager role - р нэвтрэх үеийн дэлгэц
Мэдээлэл
http://qiita.com/umanoda/items/679419ce30d1996628ed
http://qiita.com/cigalecigales/items/73d7bd7ec59a001ccd74
http://d.hatena.ne.jp/htz/20140718/1405690417
http://codeonhill.com/devise-cancan-and-activeadmin/
No comments:
Post a Comment