【転職110】本日やった事と感想+Postができない!

本日のタスク

【終わったタスク】10/14(水)

◆勉強

・Ruby on Rails5 II(2.3h)

 →投稿一覧ページ、データベース、共通のレイアウト

◆運動

無し。

◆その他

・10/15の予定を決める。

・ダイエットブログ更新。

・転職ブログ更新。

【感想】

 

10/14

・Ruby on Rails5 II(2.3h)

 →投稿一覧ページ、データベース、共通のレイアウト

上記の中でデータベースに投稿するの項目をやっていたところ、rails consoleからPost.newで投稿をしてみたところ、どうやらデータベースに対して反映されていない模様。

しかもpost/indexのページのコンテンツ部分だけ白地になってエラーメッセージも出ない。やばい。

とりあえず、rails g model Post content:textとrails db:migrateは出来て、migrateのファイルも作られていました。

23:20:49

[~/sample_app04] % docker-compose run web rails g model Post content:text

Creating sample_app04_web_run … done

      invoke  active_record

      create    db/migrate/20201013142053_create_posts.rb

      create    app/models/post.rb

      invoke    test_unit

      create      test/models/post_test.rb

      create      test/fixtures/posts.yml

23:22:46

[~/sample_app04] % docker-compose run web rails db:migrate

Creating sample_app04_web_run … done

== 20201013142053 CreatePosts: migrating ======================================

— create_table(:posts)

   -> 0.1213s

== 20201013142053 CreatePosts: migrated (0.1222s) =============================

色々とググってみたところ、rails dbconsoleが見れるか試したところ見られず。再びググってみたところ、下記の記事を発見。

docker-composeで、rails dbconsoleが使えなくてハマった話。

 →:https://qiita.com/ryosk7/items/077ea98a88ec3df289c8

Dockerfileに”mysql-client”を追加するとあってので、追加してdocker-compose buildを実施。

ところが、”E: Package ‘mysql-client’ has no installation candidate”が出たので、再びググる。

すると下記の記事を発見。

docker-compose buildするときにbundle installやmysql-clientでコケた話

 →:https://qiita.com/aseanchild1400/items/d3580366054fee3d2703

記事の通りに”mariadb-client ”に書き換えて再度docker-compose buildを実行し成功。posts/indexのページも元に戻りました。ホッ。

rails dbconosoleも見ることができました。

17:40:01

[~/sample_app04] % docker-compose run web rails dbconsole                                                                                                 ✘ 1 

Creating sample_app04_web_run … done

Enter password: 

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.7.31 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MySQL [myapp_development]> 

MySQL [myapp_development]> show databases;

+——————–+

| Database           |

+——————–+

| information_schema |

| myapp_development  |

| myapp_test         |

| mysql              |

| performance_schema |

| sys                |

+——————–+

6 rows in set (0.002 sec)

MySQL [myapp_development]> 

MySQL [myapp_development]> quit

Bye

改めてPost.newで投稿を試してみますが、やっぱり上手くいきません。

ただ、post/indexのページは大丈夫そうです。ホッ。

[~/sample_app04] % docker-compose run web rails console

Creating sample_app04_web_run … done

Loading development environment (Rails 5.2.4.4)

irb(main):001:0> 

irb(main):002:0> post = Post.new(content: “Hellow world3”)

   (1.0ms)  SET NAMES utf8,  @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ‘,STRICT_ALL_TABLES’), ‘,NO_AUTO_VALUE_ON_ZERO’),  @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483

=> #<Post id: nil, content: “Hellow world3”, created_at: nil, updated_at: nil>

irb(main):003:0> 

引き続きググってみたところ、下記の記事を発見。

 →:https://rails-ambassador.herokuapp.com/lessons/ManipulateTheModel

記事に従いテーブルを確認してみる。

[~/sample_app04] % docker-compose run web rails dbconsole

Creating sample_app04_web_run … done

Enter password: 

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MySQL connection id is 10

Server version: 5.7.31 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MySQL [myapp_development]> desc posts;

+————+————+——+—–+———+—————-+

| Field      | Type       | Null | Key | Default | Extra          |

+————+————+——+—–+———+—————-+

| id         | bigint(20) | NO   | PRI | NULL    | auto_increment |

| content    | text       | YES  |     | NULL    |                |

| created_at | datetime   | NO   |     | NULL    |                |

| updated_at | datetime   | NO   |     | NULL    |                |

+————+————+——+—–+———+—————-+

4 rows in set (0.003 sec)

MySQL [myapp_development]> quit

Bye

Postsにcontentでtypeがtextとあるので、rails g model Post content:textは出来ている模様。

う〜む。今日はここまで。