sugulogの日記

Railsの一問一答!こんな時どうすればいいの??

スポンサードリンク

f:id:sugulog:20200923031047p:plain
こんにちは、すぐるです!

sugulogをお読みいただきありがとうございます!!

このブログは、「 過去の無知な自分に向けてわかりやすく説明するなら?? 」を基準に書いています。

少しでもお役に立てれば幸いです。

 

今回は、こんな時どうすればいいの??ということで

を記述していきます!!

その為このブログを読むことで、Railsのどうすればいいの?が解決されるのはもちろん、何か困ったときのカンニングペーパーとして参考になること間違いなしです!

また、新しいRailsの一問一答に出会うたびに追記していきます!!

是非最後までご愛読ください。

 

Railsの一問一答

Railsの一問一答に出会った順に書いてます。

食欲を忘れるほどに没頭しながら学習した思い出順なのでご了承ください。

 ・コンソールからデータを追加する方法は??

コンソールでrails cコマンド(rails c)を実行し、Railsアプリをコンソールから操作できるようにする。

newメソッドを使いインスタンスを生成する。  

例)post = Post.new

カラムを指定し追加したいデータを入力する。 

例)post.content = "こんにちは"

saveメソッドを使いデータを保存する。    

例)post.save

またcreateメソッドを使い、以下のように保存することもできる。

例)Post.create(content: "こんにちは")

・devise導入後、削除する方法は??

rails db:migrate:statusマイグレーションの状況を確認する。

rails db:rollbackを実行し、deviseに該当するマイグレーションファイルをdownの状態にする。

ロールバックされるのは最新のマイグレーションファイルのみなので、複数のマイグレーションファイルがある場合はdownになるまで何回も行う。

rails d devise:viewsを実行し、deviseに関連するビューファイルを削除する。

rails d devise モデル名を実行し、deviseのマイグレーションファイルとモデルファイルを削除する。

 rails d devise:installを実行し、devise導入前の段階に戻す。

※この後再導入する場合は、通常通りのdevise導入方法を実行する。

・データベースを削除し設定を修正する方法は??

rails db:dropを実行し、データベースを削除する。

database.ymlなどを修正する。

rails db:createを実行し再び、データベースを作成する。

・データベースの削除とマイグレーションファイルの適用を一括で行う方法は??

rails db:migrate:resetを実行する。

このコマンドを実行するでデータベースを削除し、再度生成し、既存のマイグレーションファイルをすべて適用させることができる。

※データベースを1度削除しているため、保存されているデータなどは全て削除される。

マイグレーションファイルに記載されたカラムの設定を変更する方法は??

rails db:migrate:statusマイグレーションの状況を確認する。

rails db:rollbackを実行し、該当するマイグレーションファイルをdownの状態にする。

ロールバックされるのは最新のマイグレーションファイルのみなので、複数のマイグレーションファイルがある場合はdownになるまで何回も行う。

マイグレーションファイルを修正する。

rails db:migrateを実行し、マイグレーションファイルを適用させる。

カラムを追加したい場合は、以下のブログを参考にしてください。

sugulog.hatenadiary.jp

・ テーブルを再作成する方法は??

rails db:migrate:statusマイグレーションの状況を確認する。

rails db:rollbackを実行し、該当するマイグレーションファイルをdownの状態にする。

ロールバックされるのは最新のマイグレーションファイルのみなので、複数のマイグレーションファイルがある場合はdownになるまで何回も行う。

rails d model モデル名を実行し、該当するモデルを削除する。 

rails g model モデル名のモデル名を正しく入力して実行し、再度モデルを作成する。

rails db:migrateを実行し、マイグレーションファイルを適用させる。

マイグレーションファイルをupのまま削除してしまった時の対処法は??

rails db:migrate:statusで削除してしまったファイルのMigration IDを調べる。

そのIDを元に仮のマイグレーションファイルを作成する。

例)Migration ID.sample.rb

仮のマイグレーションファイルの中身を記述する。

例)sample.rbの場合

f:id:sugulog:20201019163323p:plain

rails db:migrate:statusマイグレーションの状況を確認する。

rails db:rollbackを実行し、該当するマイグレーションファイルをdownの状態にする。

ロールバックされるのは最新のマイグレーションファイルのみなので、複数のマイグレーションファイルがある場合はdownになるまで何回も行う。

その後、仮のマイグレーションファイルを削除する。

・テーブルから不要なカラムを削除する方法は??

rails g migration Removeカラム名From削除元テーブル名 カラム名:型で削除用のマイグレーションファイルを作成する。

その後、rails db:migrateマイグレーションを実行することで削除できる。

Hamlの導入方法は??

gem "haml-rails", ">= 1.0", "<= 2.0.1"をGemfileに記述後、bundle installする。

rails haml:erb2hamlを実行し、erbファイルを全てhamlに変換する。

 ・Sassの導入の仕方は??

application.cssファイルの中身を全て消す。

application.cssの拡張子を変更して、application.scssにする。

※拡張子を.sassにする方法もありますが、.scssの方が使用しやすいためこちらで指定してます。

・Sass導入後、FontAwesomeの導入方法は??

gem "font-awesome-sass"をGemfileに記述後、bundle installする。

application.scssに@import "font-awesome-sprockets";と、@import "font-awesome";を記述する。

hamlでFontAwesomeを使い、フォームの中でiconのみの表示でファイルを選択させる方法は??

(例)
= f.label :image do
= icon("far", "image")
= f.file_field :image, class: "file"

 label要素の役割として、ラベルがクリックされた時に子要素もクリックされたことにするというのがある。

それを利用してdoで範囲指定し、iconとfile_fieldを囲む。

 後はCSS(Sass)でfile_fieldにdisplay: noneをあてることで非表示にする。

・フォームの入力値を残したままフォームのページに遷移させる方法は??

コントローラから遷移させる際にredirect_toではなくrenderを使う。

redirect_toは指定されたページにリダイレクトする。

renderは指定したページを表示する。

・CarrierWaveを導入する方法は??

gem "carrierwave"gem "mini_magick"をGemfileに記述後、bundle installする。

rails g uploader imageを実行し、app/uploaders/image_uploader.rb(アップローダー)ファイルを作成する。

画像をアップロードするモデルに、mount_uploader :画像を保存するカラム, ImageUploaderを記述する。

※MiniMagickも一緒に導入しているためapp/uploaders/image_uploader.rb内の、include CarrierWave: :MiniMagickコメントアウトを外しprocess resize_to_fit: [ ]の値を変更することで、アップロードされる際の画像の縦横比を設定することができる。

・コントローラー作成時にアクションも一緒に作成する方法は??

コントローラー作成時に後ろにアクション名も一緒に指定することで、コントローラーにアクションが定義される。またそれに対応するビューファイルも作成される。

exrails g controller コントローラー名 アクション名

  

以上、今回のブログでした。

何か困ったときのカンニングペーパーとして参考になりそうでしたか??

これからもどんどん知識を蓄えていきますね(≧∀≦)/

 

最後に!!

今後も、「 過去の無知な自分に向けてわかりやすく説明するなら?? 」を基準にブログを書いていきます。

少しでも気になった方はお試しでもいいので1度、読者登録お願いします!

またTwitterでもプログラミングに関することを中心に情報を発信してます。

宜しければそちらのフォローもお願いします。

最後までご愛読いただきありがとうございました!!