Rails カラムに配列を追加 忘備録
マイグレーションファイルはこんな感じ
rails 5.2
def change add_column :areas, :area_polygon, :text, array: true end
スタックオーバーフローとか見てると、このようにかけとあったけどだめだった。
add_column :documents, :share, :array, :default => []
デフォルト値を入れてはいけないということ
目的
GoogleMAPにポリゴンを設定する。 まず、カラムを上記のように作成
表示の仕組み
コントローラーからjsにオブジェクトを渡す。
before_action :export_controller_and_action_params def index //@areasはカラ 後から詰め込む gon.at_areas = @areas gon.areas = [] # 座標と順番をgon.areasに詰め込む @areas.includes(:area_coordinates).each do |area| coordinates = [] area.area_coordinates.each do |coord| latlng = {lat: coord.latitude, lng: coord.longitude} order = coord.in_order coordinates.push([order, latlng]) end # 順番をソートする coordinates.sort_by! {|item| item[0]} # orderのインデックス[0]を削除する latl coordinates.map! do |c| c = c[1] end gon.areas.push(coordinates) end end
ApplicationController
def export_controller_and_action_params gon.params = { //paramsよりコントローラーとアクションを取得。 //これにより各コントローラーとアクションごとにJavaScriptを切り分けできる。 controller: params[:controller], action: params[:action], } end