7/30(木)定期MTG 個人目標

■内海さん:本番環境にアップして、スプリントレビューに備える。

      引き続きカテゴリーの編集をする

 

■金子さん:削除機能の実装引き続き行う

 

■山川さん:商品編集を引き続き行う

 

■中村:カード情報がPAY.JPに登録され、代わりにトークンが発行されるようにする

7/26(日) 本日の学び

今日はcssまで進み、そこでsvgファイルを表示するのにてこずってます。

結局、私が拾ってきたアイコンはhamlcssも効かない(全く指定のサイズになってくれない)アイコンだったようで、それだけで相当時間を費やしてしまいました。

カード番号を入力したあと、下に7個アイコンが出てると思うのですが、メルカリのそれと比べて小さいんですよね、何やっても。

なのでアイコンを今探していて、VISAはうまくいきそうだけど、amereican_expressがまだ見つけ切れてなくて。まずいまずい。でも焦っちゃだめだ。深刻にならずに真剣に。

f:id:aaayano:20200726234219p:plain

有効期限のボックスも本家とは違うし、あとまだまだ修正の余地たくさんあります。

明日もやるぞーがんばれーーー自分!!

今日進んだところ

  • クレジットカード情報のフォーム作成(まだまだ全然途中ですが)
  • クレジットカード番号、有効期限、セキュリティコードなど大きく3つのグループに分けて書く

躓いているところ

  • そもそも、jsファイルを書く前にフォームなしで書けるはずもなく😓
  • フォームは木金までには書く
  • hamlの使い方完全に忘れているので、カリキュラム戻りながら書いてます

7/21(火) 本日の学び

また今日も理解することができ、コードが書くことができて本当に本当に嬉しい。

 

createアクションでは2つの保存作業が行われる。

1.payjpにトークンと顧客情報を結び付けて保存する処理
2.DBのCredit_cardsテーブルのカラムに値を保存する処理

保存の状態によってまた処理が分岐する。
1.成功したらredirect_toでindexに戻る
2.失敗したらrenderでnewに戻る

 

それらをコードで書くとこう

def new # Webの支払い方法をクリックするとnewに飛ぶ。
  card = Credit_card.where(user_id:current_user.id).first
  redirect_to action: "index" if @card.present? # indexは今途中まで書けてます
end

def create # newのweb上に追加ボタンがあってそれを押すとcreateへ飛ぶ
  Payjp.api_key = 'PAYJP_ACCESS_KEY'# 秘密鍵
    if params['payjp-token'].blank? # blankだったらもう一度newで登録画面へ
      redirect_to action: "new"
    else
     customer = Payjp::Customer.create( # これはpayjpにトークンと顧客情報を結びつける処理(定型文)
     description:'test', # PAY.JPの顧客情報に表示する概要になるらしい。なくても良い
     email: current_user.email,# ログイン中のユーザーのemailをキーにセット
     card: params['payjp-token'], # 直前のnewアクションで発行され送られてくるトークンをcardにセット
     metadata: {user_id:current_user.id}
   )

    @card = Credit_card.new(user_id: current_user.id, customer_id: customer.id,card_id: customer.default_card) #DBに顧客情報を登録
    if @card.save
      redirect_to action: "index", notice:"支払い情報の登録が完了しました"
    else
      render new
    end
  end

 
なんとか水曜日目標のカードを登録するための処理は書き終えたので、
残すはindex(これは登録したカード一覧を表示するページ)と
destroy(登録したカードの削除)となります。
これも水曜日までに書き終えられそうです。

ちなみにindexはここまで書けました。

 def index
    #カードが存在(登録)しているかどうか確認し、あればPAY.JPからカード情報にアクセスして取得
    if @card.present?
      Payjp.api_key = ENV['PAYJP_PRIVATE_KEY'] #秘密鍵をセットする
      customer = Payjp::Customer.retrieve(@card.payjp_id)#PAY.JPに登録されているカード情報のidに紐づく@cardを探してる
      @card_info = customer.cards.retrieve(customer.default_card)# PAY.JPの顧客情報からデフォルトで使うクレジットカードを取得する。
      #クレジットカード情報から表示させたい情報を定義する。
      #PAY.JPの中にオブジェクト(支払い、顧客、カードなど)があり、さらにそれに対応する値がキーバリュー形式で保存されている。
      #.brandや.last4といったようにドットでつなげることで、ほしいバリューを取得できる
      @card_brand = @card_info.brand #クレジットカードの画像を表示するためにカード会社を取得
      @exp_month = @card_info.exp_month.to_s #カードの有効期限を取得
      @exp_year = @card_info.exp_year.to_s.slice(2,3) # 年は最後の下2桁をsliceメソッドを使って取り出す

      # この後各カード会社のimageをそれぞれファイルに突っ込んで、そのファイルを変数に代入するコードを書く



  end

7/20(月)本日の学び

本当に本当に今日やっとnewとcreateアクション(途中まで)が分かりました。

カード実装、ホント難しい。

でも少しだけ分かると、なんで理解できてなかったのかもよく分かりました。

まず圧倒的に調べて足りていない。Qiitaやpayjpのリファレンスはめちゃくちゃ見たけど、そこじゃなくてまずはアプリで実際に動いて登録して削除してを繰り返さないと。

だって、私はこれを作ろうとしているのに、動いてるところ見ないで文字ばっかり追ってもどうしようもない話で、なんでそんな当たり前のことできなかったんだろう。

 

メルカリのクレカ登録ページを繰り返し登録、削除して、わざとエラー出させるを繰り返してわかったこと。

1 マイページから「支払い方法を選択」をクリック

2 newアクションが動いてクレジットカードの「追加ボタン」が出る

3 「追加ボタン」をクリックするとcreateアクションが動く

4 webでフォームが出てくる

5 フォームにカード情報を入力

6 「追加するボタン」をクリック

この一連の流れをnewとcreateアクションが処理しているんだと分かった。

こうやって文字にすると呆気ないほどシンプルなのに、もう本当に全然分からなかった。キータにはカード実装なんて簡単♫って書いてあって、なんで私全然書けないの?本当にやばいやろ、どーしよってなってました。

 

 

でもやっと今、書いてあるコードの意味が初見のときと比べてよく分かった。

模写にならずにちゃんと意味を理解しながら書けた。

この調子で明日もとことんやろ。よかったー・・やっとなんか光が見えたのかな。

また曇るかもだけど、とにかく私もなるべく限界まで自力でなんとかしたい。

やり切ろう。そして早く寝よう。朝型人間になるって言ったのにもう日付変わってるよ・・・

 

 

7/19(日)定期MTG 個人目標

■内海さん

- 画像を表示まではできるが並べて表示できるようにしたい

 

■木村さん

- (内海さんのサーバーサイドを参考にしつつ)商品一覧を表示されるようにしたい

 

■山川さん

- ログアウト状態でも商品詳細がみれて、ログインしている人しか編集削除ができないようにするところまで

 

■中村

・カード登録に関する実装(cards_controller.rb)

・並行してJavaScript,jQueryのカリキュラムも復習

7/16日(木)本日の学び

1mmも進んでいません。罪悪感でいっぱい。

 

今日1週間ぶりの出勤で、異動シーズンと重なったため雑務に追われ、勤務中にmacも全然開けなくて(いやそれは当たり前か)、干物のように水分がなくなった状態で帰宅。急いで娘に食事を与え、今日はかなり珍しく夫が早めに帰宅。古今東西の神様ありがとう。

夫に娘を託し、そこからまたzoomで繋がって、勉強会(プログラミングとは別の個人的な勉強会で、これもまた私の大いなる生き甲斐なのです)。

 

勉強会を終えてふと、私はコロナで在宅だから思うように勉強できてるんだ・・・と痛感。

 

それなのに他のメンバーは皆、毎日心身共にギリギリの状態で帰宅し、そこから難解なコードを書く。でもまた明日も仕事で、というかもうクタクタで眠たいよという状態・・・。

 

もう、ばちが当たるな私と思いました。

皆さんいつもありがとうございます。

私、もっとチームに還元せないかんやろ・・と思いつつ、ごめんなさい、明日もまた急遽出勤が決まったので、寝ます・・・

 

仕事しながら結果を出すってこんなに大変なんだと改めて思い知りました。

締め切りに焦り、できない苛立ちと不安に押しつぶされそうになり、、、

そんな人が1人でもいたらどうしよう。

 

 

明日は今日できなかった分取り返そう。

自分の実装を形にすることがみんなへの一番の貢献だと思います・・・

そして、誰か1人でも置いてけぼりの気持ちになるような環境にしないこと。

限界まで悩ませないこと。もっと考えないと。

 

ではおやすみなさい。