本日のJavaの積み上げ2

①オブジェクト指向はリアルの行動に置き換えて考える。 例えばカートに商品を入れるという行為をソースコードに落とすと ShoppingCartクラス内にaddProductメソッド(商品をカートに入れるメソッド)とproductListという配列(カート)を作る。 addProductメ…

Java 本日の積み上げ

①Javaの配列を使うに当たり、 ArrayList<String> bar = (ArrayList<String>)list.clone(); のようにクローンした配列は bar.add("犬"); のように要素を追加することが出来なかった。 (通常の配列にはもちろん追加可能) ② booleanを戻り値にしたメソッドを作成する際、 A ==</string></string>…

Java インスタンスフィールドがややこしい

メソッド内でインスタンスフィールドにアクセスしたりと、ファイル間を言ったり来たりするのがわかりにくい。 最初から一つ一つ整理して見ていく。 ①インスタンスを生成し、変数に代入 Main.java class Main { public static void main(String[] args) { Veh…

Java メソッドの定義

public static 戻り値のデータ型 メソッド名(引数) { return 戻り値 ; } 基本的な形は上記の通り。 ただややこしいのが、オーバーロードといっての型や個数が違う場合は同名のメソッドを定義できること。 実際に現場で同名のメソッドを定義することはないの…

Mysql2::Error: Cannot drop index

マイグレーションファイルををロールバックしようとしたら… remove_index(:tickets, {:column=>[:event_id, :user_id]})rails aborted!StandardError: An error has occurred, all later migrations canceled: Mysql2::Error: Cannot drop index 'index_tick…

Active Storage:画像ファイルのバリデーション

最近まで知らなかったが、Active Storage にはバリデーション用のgem があった。 gem 'active_storage_validations' それまではgem を使わずにバリデーションを作っていたので、こんな感じだった。 models/application_recode.rb class ApplicationRecord < …

springって何?

テストコードにてfactory_botを実装し、rails console で確認したところ、 KeyError: Factory not registered: "user" が出てきた。 こちらの記事を見るとどうやら"spring"が邪魔をしているらしい。 https://ja.stackoverflow.com/questions/65296/factorybo…

バリデーションエラーメッセージをJavaScript使って表示させる

いつもはフォームのエラーメッセージは下記のようにJavaScriptを使わずに行っていた。 messages_controller.rb class MessagesController < ApplicationController 〜略〜 def create @message = Message.new(message_params) if @message.save redirect_to …

テンプレートエンジン

ERB Rubyに標準で使えるテンプレートエンジン。 ERBの見た目はHTMLとほぼ同じのため、既存のHTMLもそのまま使える。 <html><head> <title>Title</title> <%= csrf_meta_tags %> <%= csp_meta_tag %> <script type="text/javascript" src="https://js.pay.jp/v1/"></script> <%= stylesheet_link_tag 'application', media: 'all'%> <%= javascript_pack_t…</head></html>

タイムゾーンに関する話

1つ目はGitHubのOmniAuth の認証が進まなくて詰まった話 結論から言うと時間がずれていました。 PCのローカル環境の時間がずれていることで発生したようだ。 見てほしいのはこちら。 https://gyazo.com/fbcdfda4e4f76793242b60d8c604c9f2 0.2秒…これだけ…

pythonで模写してみた

Pythonならyoutubeのアーカイブのチャット欄からコメントを取得できると思い、手を付けてみた。(実際はLIVEチャットの取得のみでアーカイブからではなかった) どこをどう持っていけばよいのか参考にした動画を見ながら、Youtube DATA API のリファレンスで…

存在するかを確認できるexists?、present?、presenceメソッド

exists?メソッド レコードの存在チェックだけを行う場合に使用する。 例えば モデル名.exists? でデータベースのテーブルの中にデータが存在するかを確認し、真偽をtrue,false で返してくれる。 また、 モデル名.exists?(条件) にすると指定した条件でマッチ…

コンソールやpry-railsの有用性

エラーが起きたときは"binding.pry"もしくは"rails c"で調べるとわかりやすい current_userのidやparamsのitem_id、Itemモデルの値段を調べていた時のコンソールやbinding.pryの一部のコピー rails c 1] pry(main)> p current_user.idNameError: undefined l…

paramsについて(formオブジェクトのハッシュの外にあるパラメーターを使う)

[1] pry(#<PurchasesController>)> params => <ActionController::Parameters {"authenticity_token"=>"NqmRcmfoe9upA8OR3srT7HzO4o5RCGi/dyCS2jPuhUNiHNhiEF8Z/868Byp8VXlvMF4aScovG8aZmEMPqmgnoQ==", "user_info"=>{"postal_code"=>"999-9999", "prefecture_id"=>"3", "city"=>"まち", "address_line"=>"", "building"=>"",…</actioncontroller::parameters></purchasescontroller>

ActiveRecord::NotNullViolationt

ActiveRecord::NotNullViolationt ...postal_code doesn’t have a default value... 今度はこんなエラーが。 つまり"postal_code"がnull(空)で登録されようとしてることでのエラー。 原因は 1、カラム名の間違い 2、ストロングパラメーターに入ってない 3…

ActiveModel::ForbiddenAttributesError

ActiveModel::ForbiddenAttributesError in PurchasesController#create ActiveModel::ForbiddenAttributesError Extracted source (around line #9): 7 8 9 10 11 12 def create @item = Item.find(params[:item_id]) Purchase.create(purchase_params) Use…

メソッド内の処理をまとめる

下記のようなRailsの記述。 @tweet = Tweet.find(params[:id]) が何度も出ていてなんとも Dry じゃない。 before_actionを使ってまとめられるのでまとめていく。 class TweetController < ApplicationController def show @tweet = Tweet.find(params[:id]) …

編集画面で情報を変更すると全てのレコードが変更される謎現象が起きた

写真を投稿できるアプリケーションについて学んでいるとき。 その投稿した写真の詳細を編集する詳細ページを実装していたのだが、なぜか一つの写真のデータを変更するとそのテーブルの全てのカラムが編集したデータと同じになってしまった。 User_id から写…

SyntaxError Invalid char `\x08' in expression

SyntaxError in ItemsController#index Invalid char `\x08' in expression { id: 7, mahjong: 'チートイツ' }, { id: 8, mahjong: '一気通貫' },{ id: 9, mahjong: 'トイトイ' },{ id: 10, mahjong: '小三元' } 今回はこちらのエラー。 Invalid char `\x08'…

正規表現によるパスワードのバリデーションについて

正規表現、難しい。 現在、railsのユーザー登録時のバリデーションで苦戦中。 rails は devise があるのだけれどそのままではパスワードの安全性はないに等しいのでせめてもう少しバリデーションを付け足したい。 ということでこちら。 validates :password,…

シンボル

まず、シンボルについて Ruby 2.7.0 リファレンスマニュアル を見てみると Rubyの内部実装では、メソッド名や変数名、定数名、クラス名などの`名前'を整数で管理しています。これは名前を直接文字列として処理するよりも速度面で有利だからです。そしてその…

Rails ルーティングのPrefixの空白、検索力

今日改めて思ったことがある。 検索力はとても大事だ。 Prefix verb URIパターン Controller#Actiontweets GET /tweets(.:format) tweets#index POST /tweets(.:format) tweets#create new_tweet GET /tweets/new(.:format) tweets#new edit_tweet GET /twee…

:(コロン)と,(カンマ)

コロンとカンマ、rubyの記述の中にかなり出てくるが、文字の右についたり左についたりとどんな法則でついているのだろうか。 調べてみた限りではこんな感じだ。 <コロン> ①シンボルとして記述される "name"はシンボルにすると :name またハッシュの記述でn…

idと『.』ドット

最近記述式の中でよく分からなかったのがこういった記述のidについて ① <% if user_signed_in? && current_user.id == tweet.user_id %> ② <%= link_to '編集', edit_tweet_path(tweet.id), method: :get %> 最初はなんで左は user.id で右は user_id なのか…

undefined method エラー解消

NoMethodError in MessagesController#create undefined method `message' for #<Room:0x00007fa9065717a8> def create @room = Room.find(params[:room_id]) @message = @room.message.new(message_params) @message.save end {"authenticity_token"=>"kK5hHuNqFM72OK/UKel8gZY460pFf</room:0x00007fa9065717a8>…

Ruby on Rails シングルクォーテーションとダブルクォーテーションの謎

Rubyにおいて文字列を表すのにシングルクォーテーション( ' )やダブルクォーテーション( " )を使って囲む。 シングルクォーテーション( ' )で囲むと囲ったものは全てが文字列と認識されて、そのまま出力される。 food = '牛丼' drink = 'コーラ' puts '私は#…

Railsのform_withについて

今回はヘルパーメソッドで使われるform_withの中の記述。 なんでmodelのみの時とurlと一緒の時があるのか。 実は省略されているか、されていないかの違いらしい。 <1><%= form_with(model: @tweet, local: true) do |form| %> これはある写真投稿アプリの…

Ruby on Rails のdevise gem を使ったユーザー登録機能の実装

今日はRailsのユーザー登録実装について。 少しずつ理解できてきたので復習。 (あくまで私が練習している途中を思い出しているので、手順など異なることもあります。というかなんなら間違ってますのでご容赦ください) 新規アプリを実装したとして仮定してg…

プログラミングで世界を救え!?

はじめまして。 初投稿です…と言ってもほとんど自分専用のアウトプットブログになる予定。 でも最初なので真面目に。 突然だけど、なぜプログラミングの話をするのか。 それは今勉強しているから。 ではなぜプログラミングを勉強するのか。 それはこの技術が…