Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- create_table "users", force: :cascade do |t|
- t.string "email", default: "", null: false
- t.string "encrypted_password", default: "", null: false
- t.string "reset_password_token"
- t.datetime "reset_password_sent_at"
- t.datetime "remember_created_at"
- t.integer "sign_in_count", default: 0, null: false
- t.datetime "current_sign_in_at"
- t.datetime "last_sign_in_at"
- t.string "current_sign_in_ip"
- t.string "last_sign_in_ip"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "provider"
- t.string "uid"
- t.string "name"
- t.string "phone_number"
- t.string "description"
- t.string "image"
- t.string "avatar_file_name"
- t.string "avatar_content_type"
- t.integer "avatar_file_size"
- t.datetime "avatar_updated_at"
- t.index ["email"], name: "index_users_on_email", unique: true
- t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
- end
- class User < ApplicationRecord
- devise :database_authenticatable, :registerable,
- :recoverable, :rememberable, :trackable, :validatable, :omniauthable
- validates :name, presence: true,uniqueness: true, length: { maximum: 50 }
- validates :email, {presence: true, uniqueness: true}
- has_attached_file :avatar,
- :styles => { :medium => "400x400", :thumb => "100x100>" },
- :default_url => "avatar-default.png",
- storage: :s3,
- s3_credentials: {
- bucket: ENV.fetch('S3_BUCKET_NAME'),
- access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
- secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
- s3_region: ENV.fetch('AWS_REGION'),
- }
- validates_attachment_content_type :avatar, :content_type => /Aimage/.*Z/
- def self.from_omniauth(auth)
- where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
- user.email = auth.info.email
- user.password = Devise.friendly_token[0,20]
- user.name = auth.info.name # assuming the user model has a name
- user.image = "http://graph.facebook.com/#{auth.uid}/picture?type=large" # assuming the user model has an image
- # If you are using confirmable and the provider(s) you use validate emails,
- # uncomment the line below to skip the confirmation emails.
- # user.skip_confirmation!
- end
- end
- end
- class UsersController < ApplicationController
- before_action :authenticate_user
- def edit
- @user = User.find_by(id: params[:id])
- end
- def update
- @user = User.find(params[:id])
- if @user.update(user_params)
- flash[:notice] = "ユーザー情報を編集しました"
- redirect_to("/users/#{@user.id}")
- else
- flash[:notice] = "ユーザー情報が編集できませんでした"
- redirect_to("/users/#{@user.id}/edit")
- end
- end
- private
- def user_params
- params.require(:user).permit(:avatar, :name, :email, :phone_number, :description, :college_name)
- end
- end
- <%= form_tag("/users/#{@user.id}/update", html:{multipart: true}) do %>
- <div class="form-group">
- <p>*ユーザー名</p>
- <input name="user[name]" value="<%= @user.name %>" class="form-control">
- </div>
- <div class="form-group">
- <p>*メールアドレス</p>
- <input name=user[email] value="<%= @user.email %>" class="form-control">
- </div>
- <div class="form-group">
- <p>プロフィール画像</p>
- <%= file_field_tag :avatar, class: "form-control" %>
- </div>
- <div class="form-group">
- <p>電話番号</p>
- <input name=user[phone_number] value="<%= @user.phone_number %>" class="form-control">
- </div>
- <div class="form-group">
- <p>自己紹介</p>
- <textarea name=user[description] class="form-control" rows="8" cols="80"><%= @user.description %></textarea>
- </div>
- <div class="actions">
- <input type="submit" value="プロフィールを更新" class="btn btn-primary">
- </div>
- <% end %>
- config.paperclip_defaults = {
- storage: :s3,
- s3_credentials: {
- bucket: ENV.fetch('S3_BUCKET_NAME'),
- access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
- secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
- s3_region: ENV.fetch('AWS_REGION'),
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement