Я использую Волшебный камень для управления аутентификацией.Вы можете увидеть код ниже.
models / user.rb
class User < ActiveRecord::Base
authenticates_with_sorcery!
attr_accessible :username, :email, :password, :password_confirmation
has_many :clients
has_many :orders
validates_presence_of :email, :username, :on => :create
validates_presence_of :password, :on => :create
validates_uniqueness_of :email
validates_confirmation_of :password, :message => "confirmation doesn't match password "
validates_length_of :password, :minimum => 6
end
controllers / users_controller.rb
class UsersController < ApplicationController
before_filter :require_login, :except => [:not_authenticated, :new, :create]
skip_authorize_resource :only => [:new, :create]
layout "users"
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
redirect_to clients_url, :notice => "Bienvenu dans la communauté Bakden!!!"
else
render :new
end
end
#show user profile
def show
@user = User.find(session[:user_id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @user }
end
end
# edit user profile
def edit
@user = User.find(session[:user_id])
end
# update user profile
def update
@user = User.find(session[:user_id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to(@user, :notice => 'User was successfully updated.') }
format.json { head :ok }
else
format.html { render :action => "edit" }
format.json { render json: @user.errors, :status => :unprocessable_entity }
end
end
end
_form.html.erb
<%= simple_form_for (@user),:html => {:multipart => true} do |f| %>
<div class="inputs">
<%= f.input :adress %>
<%= f.input :city %>
<%= f.input :country ,:as => :country %>
<%= f.input :telephone, :as => :string %>
<%= f.file_field :picture %>
<div class="actions">
<%= f.button :submit %> | <%= link_to "cancel", profile_path%>
</div>
<% end %>
Как я могу редактировать информацию пользователей, такую как адрес, телефон ... не затрагивая пароль, электронную почту и имя пользователя, которые являются учетными данными.