- 0.0.1. Rails モデルを紐付ける「関連(Association)」
- 0.0.2. task_pramsメソッドとは
- 0.0.3. 掲示板アプリに空の投稿を出来ないように制限をかける
- 0.0.4. 【フリマアプリ】PAY.JPでのクレジットカード決済機能について(第4回) 〜コード全文〜
- 0.0.5. 【フリマアプリ】PAY.JPでのクレジットカード決済機能について(第3回) 〜運用編(購入)〜
- 0.0.6. 【フリマアプリ】PAY.JPでのクレジットカード決済機能について(第2回) 〜運用編(クレジットカード登録)〜
- 0.0.7. 【フリマアプリ】PAY.JPでのクレジットカード決済機能について(第1回) 〜導入編〜
- 0.0.8. rake実行時の NameError: uninitialized constant Xxxxx の解決について
- 0.0.9. [Rails] has_secure_passwordについて
- 0.0.10. ~これまでの学習項目および参考にした教材~
- 1. ~これまでの学習項目および参考にした教材~
- 2. ページ毎にタイトルを変更する方法
- 2.0.1. ステップ1:ヘルパーにメソッドを定義する
- 2.0.2. ステップ2:ビューに表示れるようにメソッドを埋め込む
- 2.0.3. ステップ3:各ビューで表示したいタイトルを埋め込む
- 2.0.4. rails newでエラーが出た時に解決した話
- 2.0.5. elenium::WebDriver::Error::UnknownError: unknown error: Chrome failed to start: crashed.の対処法
- 2.0.6. 【RSpec】authenticate_user!を使用したときのRSpecへの副作用をFactoryBotで解消する
- 2.0.7. DockerをつかってVueとRailsの開発環境にユーザー認証機能を実装する
- 2.0.8. 複数前のrollbackはもうしない
- 2.0.9. Docker on Rails デモ ヤリマスヵ…
- 2.0.10. RSpecとRuboCopの自動設定スクリプト
- 2.0.11. Rails 6でBootstrapをカスタマイズする
Rails モデルを紐付ける「関連(Association)」
#関連(Associationとは)
データベース上の紐付けを前提にして、モデルクラス同士の紐付けを定義することができる。
これにより、オブジェクト指向に沿った方法で関連するデータにアクセスすることができるようになる。“`models/user.rb
class User
has_many :tasks
end
“`
“`models/task.rb
class Task
belong_to :user
end
“`
Userが親分、Taskが子分のイメージ。一つのUserに対して多くのTaskがぶら下がっていることを定義している。
##何ができる?
この定義によってUserクラスのインスタンスに対しては、user.tasksといったメソッドで紐づいたTaskオブジェクトの一覧を得られることができる。例) ログインしているユーザーのTaskデータの登録
“`task_controller.rb
def create
@task = current_user.tasks.new(task_params)
end
“`
task_pramsメソッドとは
#task_paramsメソッドとは
登録アクションなどに使われるメソッド。
フォームからリクエストパラメータとして送られてきた情報の中から必要な情報だけを抜き取る役割がある。
悪意あるユーザーが有害なデータを送ってきた時に、不正なデータによって登録・更新されるのを防ぐことができる。“`task_controller.rb
def create
task = Task.new(task_params)
task.save!
endprivate
def task_params
params.require(:task).permit(:name, :description)
end
“`
(意味)
task_paramsメソッド: taskオブジェクトからnameとdescriptionを取得。
create: task_paramsを引数としてtaskインスタンスを作成。save!メソッドでデータベースに保存。
掲示板アプリに空の投稿を出来ないように制限をかける
【開発環境】
macOS Catalina
バージョン 10.15.3
ruby 2.5.1
Rails 5.2.4.2
visual studio code勉強用に掲示板アプリを作成したので、その際に行ったバリデーションを記載します。
#バリデーションを設定し、空の投稿を制限しよう
掲示板アプリなどで空の投稿が出来てしまうというのは望ましくありません。
それを防ぐためにバリデーションを設定する必要があります。##バリデーションとは?
バリデーション(validate)とは、データをDBに保存する前に無効なデータが保存されないように制限する機能のことです。バリデーションの基本的な書き方です。
“`
validates :カラム名(シンボルで指定),チェックの方法
“`
##投稿機能にバリデーションを設定する
今回作成した掲示板アプリの投稿(post)のカラムはタイトル(title)と内容(content)です。
この二つのカラムが空の場合投稿できないようにバリデーションを設定します。バリデーションはデータをDBに保存する前に行うので、モデルに記載する必要があります
【フリマアプリ】PAY.JPでのクレジットカード決済機能について(第4回) 〜コード全文〜
“`ruby:cards_controller.rb
class CardsController < ApplicationController require 'payjp' before_action :set_item, only: [:show,:pay] before_action :card_present,only:[:index,:destroy] before_action :take_card,only:[:show,:pay] before_action :set_api_key def index if @card.present? set_customer set_card_information end end def create if params['payjp-token'].blank? redirect_to action: "new" # トークンが取得出来てなければループ else user_id = c
【フリマアプリ】PAY.JPでのクレジットカード決済機能について(第3回) 〜運用編(購入)〜
某スクールにおいて、チーム開発で、フリーマーケットアプリを作成中であり、使用した技術について公開しています。
※初学者のため、ミスや認識違いが多々あると思いますがご了承ください。# フリマアプリにおいて、PAY.JPを用いたクレジットカード決済機能を実装しました!!
前回記事
今回の記事は運用編(購入)となります。
それでは、実際にPAY.JPを用いてクレジットカード機能を用いた購入ができるように実装して行きたいと思います。
##カード情報表示
「購入する」ボタンをクリックしたら、**cardsコントローラーのshow**アクションに遷移します。
【フリマアプリ】PAY.JPでのクレジットカード決済機能について(第2回) 〜運用編(クレジットカード登録)〜
某スクールにおいて、チーム開発で、フリーマーケットアプリを作成中であり、使用した技術について公開しています。
※初学者のため、ミスや認識違いが多々あると思いますがご了承ください。# フリマアプリにおいて、PAY.JPを用いたクレジットカード決済機能を実装しました!!
|内容 | url |
|:—————–|——————:|:—————————–:|
| 第1回 |導入編 | https://qiita.com/sho_U/items/ee0831844a0afd6e976f|
| 第2回 |運用編(クレジットカード登録) | https://qiita.com/sho_U/items/0a127e6f0904e3e9132b |
| 第3回| 運用編(購入)|https://qiita.com/sho_U/items/64ca57b7a1f72bf7079f|今回の記事は運用
【フリマアプリ】PAY.JPでのクレジットカード決済機能について(第1回) 〜導入編〜
某スクールにおいて、チーム開発で、フリーマーケットアプリを作成中であり、使用した技術について公開しています。
※初学者のため、ミスや認識違いが多々あると思いますがご了承ください。# フリマアプリにおいて、PAY.JPを用いたクレジットカード決済機能を実装しました!!
|内容 | url |
|:—————–|——————:|:—————————–:|
| 第1回 |導入編 | https://qiita.com/sho_U/items/ee0831844a0afd6e976f|
| 第2回 |運用編(クレジットカード登録) | https://qiita.com/sho_U/items/0a127e6f0904e3e9132b |
| 第3回| 運用編(購入)|https://qiita.com/sho_U/items/64ca57b7a1f72bf7079f|〜コード全文
rake実行時の NameError: uninitialized constant Xxxxx の解決について
# 今回の問題
rakeタスクを実行して以下のようなエラーがでた。ただしこのエラーが出て条件として、「**別プロジェクトからコピーで取ってきたrakeを実行**」して通常見ないエラーが出現した。
“`sh:rake実行後のエラー
rake aborted!
NameError: uninitialized constant AutoRakeTask
“`# 解決
rakeのタスク名と一緒に`:environment`を付与することで解決した。“`ruby:before
task :exec do
“`から
“`ruby:after
task exec: :environment do
“`へ変更したら、事象が解決した。
ちなみに、environmentについて調べた結果、以下の記事にたどり着いたが、記載されていたエラー文も同じものだった。
参考:[Rails における rake タスクの :environment について](https://qiita.com/FumiyaShibusawa/items/11035fc640bb36a615
[Rails] has_secure_passwordについて
最近使う機会が増えてきたhas_secure_passwordについてまとめてみました。
***
“`
class User < ApplicationRecord . . . has_secure_password end ``` *** ##具体的なメリット 1.セキュアにハッシュ化したパスワードを、データベース内のpassword_digestという属性に保存できるようになる。 2.2つのペアの仮想的な属性 (passwordとpassword_confirmation) が使えるようになる。**また、存在性と値が一致するかどうかのバリデーションも追加される。** 3.authenticateメソッドが使えるようになる (引数の文字列がパスワードと一致するとUserオブジェクトを、間違っているとfalseを返すメソッド)。 *** ##has_secure_passwordを使うための条件 1.gemに'bcrypt'を追加する。 2.モデルにpassword_digest属性を追加する。 *** ##注意点 メリットの2つ目のバリデ
~これまでの学習項目および参考にした教材~
~これまでの学習項目および参考にした教材~
【バックエンド言語】
・Ruby
→プロを目指す人のためのRuby入門・Ruby on Rails
→Railsチュートリアル6版・Rspec
→Everyday Rails Rspecテスト入門【フロントエンド言語】
・HTML/CSS
→1冊ですべて身につくHTML&CSSとWEBデザイン・Bootstrap
→公式リファレンス・Materialize
→公式リファレンス【その他】
・Docker
→Dockerを利用した開発環境の構築方法を学ぼう!・Git Hub
→もう怖くないGit!チーム開発で必要なGitを完全マスター
ビュー(erb,haml)でデバッグを行う
##やること
今回の記事では、表題の通りビューファイルの中でデバッグを行います。
erbとhamlではhtmlの中にRubyを書き込むことが出来るため、実はbinding.pryをかけることが出来ちゃいます。
これにより、ビューで使用する変数にどのような値が格納されているか分かるわけです!
やることはすごく簡単なことですが、意外と盲点となっており初学者では知らない人も多いと思います。##早速やってみる
以下のようにerbで書かれたビューファイルがあったとします。
注目する点は2行目のbinding.pryです。
erbはビューファイル内にRubyのコードが書けるので、2行目で処理を止めることができます。“`erb
<% @posts.each do |post| %>
<% binding.pry %>関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた