rails FireStore

本稿について

本稿はサイト運営者が学んだことなどを記したメモの内容です。
全てが正確な情報とは限りません。ご注意ください。また修正するべき点は適時修正していきます
rubyでFireStoreを扱うようにした時のメモ

今はすでにRubyの更新ライブラリが公開されていた。


Gemfile
gem 'google-cloud-firestore'


require "google/cloud/firestore"


class Firestore
  def initialize(uid)
    @store = Google::Cloud::Firestore.new(
      project_id: ENV["FIREBASE_PROJECT_ID"],
      credentials: Rails.root.join('config/firebase_admin', ENV['GCP_AUTH_KEY_FILE'])
    )
    @uid = uid
  end

  def update_purchase_stripe!(data)
    # 新規作成の場合もあるので 初期データからupdateする  fデータをmergeして更新する 
    ref = @store.col("purchase").doc(@uid)
    @store.transaction do |tx|
      # もしまだデータが作成されていない場合には初期化して更新する
      unless ref.get.exists?
        ref.set(data_format) # merge: trueで実行するとnil指定のfieldsが削除されてしまう
      end
      ref.update(data)
    end
  end


  def purchase_stripe
    get("purchase")
  end

  private


  # firestoreからデータを取得する
  def get(collection_name)
    @store.col(collection_name).doc(@uid).get.fields
  end

[参考]


Back