Rails

usericonをランダムで生成する

https://github.com/you88/room22

ここで今匿名掲示板を開発していてユーザーがサイトに来たら自動でアイコンが生成されるようにしたい。下記の流れで生成する仕組みを作る。

  • ユーザー作成時に00から09までの数字を2つ付与
  • 片方が背景色、片方にアイコンを設定し10パターン×10パターン計100パターン生成できるようにする
  • 背景色はcssに値を渡すようにアイコンは画像をそれぞれお指定する

ユーザー作成時にランダムな値を持たせる

  • icon_id・・・iconの画像のid
  • icon_color_id・・・背景色のid

をそれぞれuserテーブルに持たせる。

application_controller.erb
  def createlogin
    if session[:user_id] == User.find_by(id:session[:user_id])
      @current_user = User.find_by(id:session[:user_id])
    else
      @current_icon_id = rand(0..9)
      @current_icon_color_id = rand(0..9)
      @current_user = User.new(icon_id: @current_icon_id,icon_color_id: @current_icon_color_id)
      @current_user.save
      session[:user_id] = @current_user.id
    end
  end

rand(0..9)で0から9の値をランダムで付与する。

ハッシュでidを元にカラーコード、画像を表示

show.html.erb
img_ids = { 0 => "icon_00.png", 1 => "icon_01.png", 2 => "icon_02.png",3 => "icon_03.png",4 => "icon_04.png",5 => "icon_05.png",6 => "icon_06.png",7 => "icon_07.png",8 => "icon_08.png",9 => "icon_09.png"}
@img_id = img_ids[@comments_user.icon_id]
color_ids = { 0 => "#3399FF", 1 => "#FFCC33", 2 => "#6666FF",3 => "#FF66CC",4 => "#3366CC",5 => "#FF0099",6 => "#339933",7 => "#CC33CC",8 => "#00CC00",9 => "#FFFF66"}
  @color_id = color_ids[@comments_user.icon_color_id]

これをすべてviewに記載。viewで書いた配列のcommentに対してidをそれぞれ取り出したいので。カラーコードはcssではなく、これもviewに。変数だったのでcssではなくviewに記載した。