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

最も効率の良いプログラミング学習フロー

こんにちは、フリーエンジニアのてぃすです。 エンジニアの需要が拡大し、売り手市場となったことから、プログラミングを学習し始めた人、学習してみたいという人がかなり増えてきています。 これからの時代プログラミングを学習することは、豊かな人生を目指す上で非常に強力なスキルとなってきます。 今回はプログラミング初心者の方々に向けて、最も効率的なプログラミングの学習方法を解説していきます。 はじめに この学習フローでは、遊びのメカニズムを利用して進めていきます。 どういうことでしょうか。説明していきます。 遊ぶ感覚 ...

続きを読む

エンジニア独立

2019/4/25

【正社員並みの保証】安心フリーランスエージェント・Midworksを徹底分析

こんにちは、フリーエンジニアのてぃすです。 今やフリーランスエンジニアという働き方もだいぶカジュアルになってきています。僕自身 文系大学卒 大したキャリアもコネもない という一般的には心もとない状態から独立しましたが、正社員時代と比べて収入も5倍ほどになり、リモート中心で非常にストレスのない毎日を過ごせています。 先日エンジニアの集まりに参加して、そこにもフリーランスエンジニアが何人かいたのですが、その人たちの多くからMidworksというエージェントを使っているという話を聞きました。 気になって調べてみ ...

続きを読む

エンジニア独立

2019/4/15

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

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

続きを読む

エンジニア独立

2019/5/30

SIer・SESからWEB系エンジニアにキャリアチェンジする現実的な方法

エクセルで作らされる誰が読むかも分からないドキュメント 月に1回の帰社日 枯れた技術を言われた通りに扱うだけの毎日 スーツ勤務で下級労働者扱い SIer・SES系エンジニアとしての業務経験があり、かつ外の世界を知ったエンジニアから見たSIer・SES系のイメージってこんな感じですよね。 ここで言う外の世界の代表格と言えばWEB系ベンチャーやフリーランス。 カテゴライズの厳密さについては色々と意見はありますが、いわゆる自社サービスで利益を立てている企業と言えば分かりやすいでしょう。 最近ではエンジニアの待遇 ...

続きを読む

エンジニア独立

2019/4/28

月80万円も目指せるフロントエンドエンジニアの魅力

どうも、フリーランスエンジニアのてぃすです。 ITエンジニアといえば、JavaやRubyを駆使するサーバーサイドエンジニアの方がイメージとして強いですよね。 ただWeb系で活躍するエンジニアには他にもフロントエンドエンジニアという働き方があります。 今日はこのフロントエンドエンジニアについて、 よくある誤解 どれくらい稼げるのか どうすればなれるのか 将来性 キャリアアップのコツ などの観点からお話していきます。 フロントエンドエンジニアとは フロントエンドエンジニアとは、簡単に言えばユーザーが操作する画 ...

続きを読む

-プログラミング
-,

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