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/15

プログラミングの勉強はモチベーションだけでやると挫折する

こんにちは。フリーエンジニアのてぃすです。 最近は未経験からエンジニアを目指したり、エンジニアとしてのキャリアを向上させるために、プライベートでプログラミングを勉強をし始める人が増えてきています。 僕自身、プライベートの時間に未経験言語の勉強をしてキャリアアップした経験があるので、非常にいい傾向だと思っています。 しかしSNSやブログなどを眺めていると、 「この人モチベーションだけで勉強しているな」 という人を多く見かけます。 個人的な経験と人から聞いてきた話から、このようにモチベーションだけで勉強してい ...

続きを読む

エンジニア入門

2019/4/25

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

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

続きを読む

エンジニア独立

2019/5/30

レガシーな技術を扱っていたSES正社員がモダンな技術を扱うフリーエンジニアになるまでにやったこと

こんにちは。フリーエンジニアのてぃすです。 僕は独立する前、SESの正社員として非常に歴史の長いプロジェクトに常駐で参加していました。 Javaを使ったシステムなのですが、他のJavaエンジニアに聞いても「なにそれ」と言われてしまうような非常にマニアックなフレームワークを最新から数年遅れのバージョンで扱っていました。 自動テスト?クラウドサーバー?なにそれ?的な非常にレガシーかつ面白みのない状況に嫌気と不安を感じて独立を志したわけです。 で、この時のような僕と同じような状況で悩んでいる人ってのをエンジニア ...

続きを読む

エンジニア独立

2019/4/15

エンジニアがキャリアアップするための3つのテクニック

こんにちは、フリーランスエンジニアのてぃすです。 エンジニアという職業の中でも高収入とライフワークバランスを実現して充実した人生を送っている人もいれば、低い給料と長時間労働で疲弊しきっている人もいます。 僕も半年前まではエンジニアという職業を見限ってしまおうかと真剣に考えるほど、残念な状況にいました。 しかしこのまま終わってしまうのは悔しいと思い一念発起して行動を起こし、半年の間に月収を3倍以上あげることに成功しました。自分言ってて胡散臭い話ですが、実体験です。 キャリア向上を目指した行動の中には、意識し ...

続きを読む

エンジニア入門

2019/4/28

未経験からプログラミングを学ぶための方法を徹底比較

いまの時代、プログラマという仕事ほどインスタントに高収入を目指せる職業は存在しないと考えています。 未経験の言語での参加にも関わらず、最初から残業なしで手取り30万円を得られた経験を以って、そのことを強く実感しました。 で、最近はプログラマ・エンジニアのこういった稼げる側面に気づいて、プログラマになりたいと考える人多くなってきました。 が、実際にどのような手順を踏んでプログラミングを学習して、プログラマになればいいか分からない人も同様に多いようです。 勉強方法によっては遠回りになりかねない 働きながら勉強 ...

続きを読む

-プログラミング
-,

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