Advertisement
Guest User

Untitled

a guest
Aug 12th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.42 KB | None | 0 0
  1. create_table "users", force: :cascade do |t|
  2. t.string "email", default: "", null: false
  3. t.string "encrypted_password", default: "", null: false
  4. t.string "reset_password_token"
  5. t.datetime "reset_password_sent_at"
  6. t.datetime "remember_created_at"
  7. t.integer "sign_in_count", default: 0, null: false
  8. t.datetime "current_sign_in_at"
  9. t.datetime "last_sign_in_at"
  10. t.string "current_sign_in_ip"
  11. t.string "last_sign_in_ip"
  12. t.datetime "created_at", null: false
  13. t.datetime "updated_at", null: false
  14. t.string "provider"
  15. t.string "uid"
  16. t.string "name"
  17. t.string "phone_number"
  18. t.string "description"
  19. t.string "image"
  20. t.string "avatar_file_name"
  21. t.string "avatar_content_type"
  22. t.integer "avatar_file_size"
  23. t.datetime "avatar_updated_at"
  24. t.index ["email"], name: "index_users_on_email", unique: true
  25. t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
  26. end
  27.  
  28. class User < ApplicationRecord
  29. devise :database_authenticatable, :registerable,
  30. :recoverable, :rememberable, :trackable, :validatable, :omniauthable
  31.  
  32. validates :name, presence: true,uniqueness: true, length: { maximum: 50 }
  33. validates :email, {presence: true, uniqueness: true}
  34.  
  35. has_attached_file :avatar,
  36. :styles => { :medium => "400x400", :thumb => "100x100>" },
  37. :default_url => "avatar-default.png",
  38. storage: :s3,
  39. s3_credentials: {
  40. bucket: ENV.fetch('S3_BUCKET_NAME'),
  41. access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
  42. secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
  43. s3_region: ENV.fetch('AWS_REGION'),
  44. }
  45. validates_attachment_content_type :avatar, :content_type => /Aimage/.*Z/
  46.  
  47. def self.from_omniauth(auth)
  48. where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
  49. user.email = auth.info.email
  50. user.password = Devise.friendly_token[0,20]
  51. user.name = auth.info.name # assuming the user model has a name
  52. user.image = "http://graph.facebook.com/#{auth.uid}/picture?type=large" # assuming the user model has an image
  53. # If you are using confirmable and the provider(s) you use validate emails,
  54. # uncomment the line below to skip the confirmation emails.
  55. # user.skip_confirmation!
  56. end
  57. end
  58. end
  59.  
  60. class UsersController < ApplicationController
  61. before_action :authenticate_user
  62.  
  63. def edit
  64. @user = User.find_by(id: params[:id])
  65. end
  66.  
  67. def update
  68. @user = User.find(params[:id])
  69.  
  70. if @user.update(user_params)
  71. flash[:notice] = "ユーザー情報を編集しました"
  72. redirect_to("/users/#{@user.id}")
  73. else
  74. flash[:notice] = "ユーザー情報が編集できませんでした"
  75. redirect_to("/users/#{@user.id}/edit")
  76. end
  77. end
  78.  
  79. private
  80.  
  81. def user_params
  82. params.require(:user).permit(:avatar, :name, :email, :phone_number, :description, :college_name)
  83. end
  84.  
  85. end
  86.  
  87. <%= form_tag("/users/#{@user.id}/update", html:{multipart: true}) do %>
  88.  
  89. <div class="form-group">
  90. <p>*ユーザー名</p>
  91. <input name="user[name]" value="<%= @user.name %>" class="form-control">
  92. </div>
  93.  
  94. <div class="form-group">
  95. <p>*メールアドレス</p>
  96. <input name=user[email] value="<%= @user.email %>" class="form-control">
  97. </div>
  98.  
  99. <div class="form-group">
  100. <p>プロフィール画像</p>
  101. <%= file_field_tag :avatar, class: "form-control" %>
  102. </div>
  103.  
  104. <div class="form-group">
  105. <p>電話番号</p>
  106. <input name=user[phone_number] value="<%= @user.phone_number %>" class="form-control">
  107. </div>
  108.  
  109. <div class="form-group">
  110. <p>自己紹介</p>
  111. <textarea name=user[description] class="form-control" rows="8" cols="80"><%= @user.description %></textarea>
  112. </div>
  113.  
  114. <div class="actions">
  115. <input type="submit" value="プロフィールを更新" class="btn btn-primary">
  116. </div>
  117.  
  118. <% end %>
  119.  
  120. config.paperclip_defaults = {
  121. storage: :s3,
  122. s3_credentials: {
  123. bucket: ENV.fetch('S3_BUCKET_NAME'),
  124. access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
  125. secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
  126. s3_region: ENV.fetch('AWS_REGION'),
  127. }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement