TIS ENGINEER NOTE

ITエンジニアのためのキャリア向上ノウハウブログ

プログラミング

Ruby on Railsの『こんな時どうするんだっけ』まとめ【随時更新】

更新日:

Ruby on Railsで開発を行っていると

  • この操作ってどうやるんだっけ?
  • この機能を実装したいときはどのメソッドを使えばいいんだっけ?
  • このエラー見たことあるけど、どうやって対応したんだっけ?

などと何度も同じことを調べてしまうことが多いので、自分の備忘録がてら、Railsの基本操作・トラブルシューティングについてまとめていこうと思います。

コマンド

プロジェクト作成

rails new hello_app

bundleスキップ

rails new app-name --skip-bundle

MySQLを使用して作成

rails new app-name --skip-bundle -d mysql

新規コントローラー作成

rails generate controller Users

※コントローラー名は複数形

複数単語の場合

rails generate controller UserCategories

※generateするときのコントローラー名はキャメルケーススネークケースのどちらでも問題ないようです。

いずれで実行してもコントローラーファイル名はスネークケース、クラス名はキャメルケースに統一されます。

自分は統一した方が迷わず済むので、コントローラー・モデルともにキャメルクラスでコマンドを実行しています。

新規モデル作成

rails generate model User name:string email:string

※モデル名は複数形

複数単語の場合

rails generate model UserCategory name:string email:string

※複数単語命名についてはコントローラーと同様

コントローラー

各アクションの前に処理を実行

before_action :article_user_check

特定のアクションのみ

before_action :article_user_check, only: :show
複数
before_action :article_user_check, only: [:edit,:show,:update,:destroy]

特定のアクションを除外して実行

before_action :article_user_check, except: :show
複数
before_action :article_user_check, except: [:edit,:show,:update,:destroy]

データ作成

※ユーザーの新規記事(article)を作成

@article= current_user.articles.build(article_params)
if @article.save
    flash[:success] = "記事を作成しました"
    redirect_to @article
else
    render 'articles/new'
end

ストロングパラメータ設定

private
def article_params
 params.require(:article).permit(:title,:body)
end

データ更新

@article= Article.find(params[:id])

if @article.update_attributes(article_params)
    flash[:success] = "記事を更新しました"
    redirect_to articles_url
else
    render 'edit'
end

 

モデル

1対多のリレーション

has_many :articles,dependent: :destroy
belongs_to :user

多対多のリレーション

※記事にカテゴリーを設定

has_many :categories, through: :article_categories
has_many :article_categories, dependent: :destroy
has_many :articles, through: :article_categories
has_many :article_categories, dependent: :destroy
belongs_to :article
belongs_to :category

値が空であることを禁ずるバリデーション

validates :user_id,presence:true

値の文字数を制限するバリデーション

最大文字数

validates :title, length: { maximum: 30 }

最小文字数

validates :title, length: { minimun: 30 }

 

ビュー

新規登録画面

<%= form_for(@article) do |f| %>
    <%= f.label :title %>
    <%= f.text_field :title,placeholder:"記事の名称" %>
    <%= f.label :body %>
    <%= f.text_area :body,placeholder:"記事の本文" %>
    <%= f.submit "記事作成" %>
<% end %>

リンク

<%= link_to “記事一覧”, articles_path %>


<%= link_to articles_path do %>
    記事一覧
<% end %>

よく読まれている記事

エンジニア入門

2019/4/25

絶対にエンジニアになりたい人にオススメするプログラミングスクール3選

こんにちは、フリーエンジニアのてぃすです。 最近はエンジニアの人手不足による給与向上や、自由度の高い働き方に魅力を感じてエンジニア・プログラマを目指す人が増えてきました。 僕の周囲にもプログラミングを始めたいという人が増えてきて、プログラミングスクールとかたくさんあるけどどれがいいの?という質問を受けることがあります。 せっかくなので実際に現場でWeb開発に携わる立場からプログラミングスクールについて比較しながら調べてみました。 そして実際にエンジニアとして働くために最も充実したサービスを提供しているプロ ...

続きを読む

エンジニア独立

2019/4/15

他のエンジニアと差をつけるための面談前の下準備

こんにちは、フリーエンジニアのてぃすです。 僕は正社員から派遣、フリーランスへと転身する際に、絶対に妥協したくないという意志の元、半年ほどの間に10件近くの面談を体験してきました。 今日はその時の体験を元に、エンジニアが面談を受ける前に下調べしておくべきコンテンツについて紹介していこうと思います。 なぜ下調べが必要か エンジニアって面談を軽視している人が多いんですよね。 ある程度の経歴があるエンジニアは、売り手市場であることも手伝い、まあまあ満足できる就業先を得られるのでそこまで面談対策をじっくりしている ...

続きを読む

エンジニア独立

2019/4/15

エンジニアがリモートワークをして感動したお話

こんにちは。フリーランスエンジニアのてぃすです。 僕はエンジニアとして活動する中で、メインで参加しているプロジェクト以外にもフルリモートでもう1つのプロジェクトにも参加しています。 今日は実際にリモートワークってどんなもんなのかについてお話していこうと思います。 前置き リモートワークの話題については各種メディア、ブログやSNSでも度々盛り上がっています。 通勤時間の短縮になる 通勤で使う体力を仕事にまわすことができる 家庭の事情などで外で働けない人も活躍することができる などのポジティブな捉え方もあれば ...

続きを読む

エンジニア独立

2019/5/29

プログラマーという働き方を見限る前に見ておくべき記事

プログラマーとかSEってちょっと前まで最先端の働き方って感じで世間でもてはやされていましたが、今ではブラック業界の代表格と言われるようになっていますよね。エリート社畜の巣窟とか。 実際SIer系の案件であったり、システム会社を名乗る派遣企業によって希望を持って入ってきた若者が食いつぶされてきたわけですから、当然の帰結ともいえます。 実際僕がこれまで正社員として働いてきた会社も、みなし残業という名の残業未払いであったり、都内にも関わらず勤続2年目で手取り17万円とかいう扱いを平気でやってきました。鬼畜の所業 ...

続きを読む

エンジニア独立

2019/4/15

正社員エンジニアがフリーランスになるのは全く難しくないという事実

どうも、フリーランスエンジニアのてぃすです。 最近ではフリーランスエンジニアというのも珍しいものではなくなってきましたが、まだ誤解されている部分があります。 「フリーランスエンジニアになるのって大変なんでしょ?」 という誤解です。 エンジニアがフリーランスになるのに、 卓越した技術やセンス 業界内の幅広いコネ 仕事を取るための営業力 などは一切必要ありません。 今回はそのあたりの誤解を解消していきたいと思います。 フリーランス = ハイスキル ではない 世の中多くのエンジニアが誤解していることなんですが、 ...

続きを読む

-プログラミング
-,

Copyright© TIS ENGINEER NOTE , 2020 All Rights Reserved Powered by AFFINGER5.