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 %>

よく読まれている記事

エンジニア入門

2018/11/14

○ヶ月でプログラマーになれる vs そんな簡単になれない論争について

こんばんは。フリーエンジニアのてぃすです。 最近TwitterをはじめとするSNSやブログなどで度々繰り返されている 「○ヶ月でエンジニア/プログラマーになれる」という広告や意見に対する、 「エンジニア/プログラマーはそう簡単になれる職業ではない」 という意見から始まる論争。 今日は実際にプログラマーとしてご飯を食べていて、職業エンジニアになるためのノウハウについての記事も投稿している立場から、この一連のやりとりについて意見してみようと思います。 「○ヶ月でエンジニア/プログラマーになれる」という広告・意 ...

続きを読む

エンジニア独立

2019/5/30

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

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

続きを読む

エンジニア独立

2019/5/29

エンジニアが会社員のままでいるのはヤバいなと感じた理由

現在会社員エンジニアからフリーランスエンジニアへの転身を目論んで活動中のてぃすです。 今回は僕が感じた会社に雇われた状態でエンジニアを続けることのデメリットについて語っていきます。 エンジニアは多くの現場で幅広い技術を習得するべきである 会社員としてエンジニアを続けることの最大のマイナスポイント。 それはキャリアのコントロールしにくいという点です。 エンジニアが携わるITの世界というのは、技術の流行り廃りが他の業界に比べて断トツで早いんですよね。 そうなるとその技術で生計を立てていくエンジニアという存在は ...

続きを読む

エンジニア独立

2019/4/15

稼げないエンジニアは過小評価が原因

こんにちは、フリーエンジニアのてぃすです。 僕は正社員時代、3年目になっても手取りが20万にも届かない残念な状態にありました。その時は、 てぃすITエンジニアとか全然稼げない職業なんだな という印象を持っていました。別の業種に就こうと考えたことも1度や2度ではないです。 そして正社員を辞めてフリーランスになって月100万程度は安定して稼げるようになり、エンジニアの収入の相場のカラクリが少しずつ掴めてきました。 勘違いしないで欲しいのですが、単に正社員よりフリーランスの方が優れているということが言いたいわけ ...

続きを読む

エンジニア入門

2018/1/21

プログラミング言語としてのJavaについて

こんにちは、フリーランスエンジニアのてぃすです。 エンジニア・プログラマは年収1000万を現実的に目指せる職業として最近特に注目を集めている職業です。 今いる業界の将来性に不安を感じ脱出してきた人たちも、どんどんエンジニア・プログラマという働き方に集結しています。 ある程度エンジニア・プログラマという職業について調べていると、どのプログラミング言語を習得すればいいのか、という疑問が出てくるタイミングがあると思います。 どのプログラミング言語を選べばいいか、という疑問について調べてみると最近ではJava・R ...

続きを読む

-プログラミング
-,

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