Rails関連のことを調べてみた2022年03月27日

Rails関連のことを調べてみた2022年03月27日

いいねボタンのAjaxが機能しません。リロードをしなければ反応しません。

# エラー
いいねボタンを押しても反応しません。

### destroy
エラーメッセージがなかったのでログを載せました。
“`
Started DELETE “/favorites/4950” for 14.12.68.160 at 2022-03-27 02:18:28 +0000
Cannot render console from 14.12.68.160! Allowed networks: 127.0.0.0/127.255.255.255, ::1
Processing by FavoritesController#destroy as JS
Parameters: {“authenticity_token”=>”*******==”, “id”=>”4950”}
User Load (0.2ms) SELECT “users”.* FROM “users” WHERE “users”.”id” = ? LIMIT ? [[“id”, 1], [“LIMIT”, 1]]
↳ app/helpers/sessions_helper.rb:17:in `c

元記事を表示

Rubyスクリプトの字句解析

Rubyを触っていく中で、「Rubyはどんな過程を経てコードが理解されて処理されるんだろう」と思って書籍を読んでそのアウトプットをしていこうとおもいます。

## 処理の流れ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485775/7e628acd-0c13-02c6-d318-5b5d0e01ec00.png)

全体的な処理の流れはこのような感じです。まずは全体の流れを抑えることが大事になりそうです。
この記事では、字句解析と構文解析までを書こうとおもいます。

## 字句解析
以下のコードを“`simple.rb“`ファイルに記述し、実行してみます。
“`
10.times do |n|
p n
end

# =>0
1
2
3
4
5
6
7
8
9
“`
まず、この文字列に遭遇すると、Rubyは**字句解析**を行います。
>字句解析とは、自然言語の文やプログラミング言語のソースコードなどの文字列を解析して、後半の狭義の構文解析で最小単位(終端記号)となってい

元記事を表示

rails_tutorial chapter9 <忘備録>ログインとログアウトの応用

chapter8では、セッションを利用してログイン・ログアウトを実装しましたが、chapter9ではcookieを利用して、永続的なログイン・ログアウトの実装をします。これはそこまでセキュリティーが求められないWebサービス向きです。

### 今回の実装のまとめ
1、Userモデルにremember_digestを作成
2、remember_digestにハッシュ化したトークンを保存(ハッシュは不可逆)
3、cookieにトークンと暗号化されたuser_idを保存
4、authenticated?(user)メソッドを使ってcookies[:remember_token]がremember_digestと一致することを確認

上で説明した設計やセキュリティ上の考慮事項を元に、次の方針で永続的セッションを作成する。

### remember_digestカラムをUserモデルに追加
“`
$ rails generate migration add_remember_digest_to_users remember_digest:string
“`

### rememberメ

元記事を表示

モデルを作る

Railsではコントローラやビューからモデルを使うプログラムを書くことがほとんどであり、まず機能に関連するモデルを用意するのが一般的だ。

//Postモデルの作り方。//

モデルは主に
1,モデルに対応するRubyのクラス
2,モデルに対応するデータベースのテーブル
の二つから構成される。

ちなみに命名の規則として
1は大文字で
2は小文字の複数形で書かなければならない。

理由は簡単で、データベースは複数のものを取り出すときに使う。
また、モデルはデータベースの書き込みならず読み出しも行う。
モデルは単体でデータベースが複数あるイメージを持っていただけると命名規則もわかりやすいかと思う。

つまり今回、例えば
1モデルをTaskと名づけたのなら2のデータベースはtasksと複数形になる。

次にどんなカラムを持たせるのかも考える。
“`
bin/rails g model [モデル名][属性名:データ型 属性名:データ型]
bin/rails g model Post name:string//短い文字列// comment:text //数字//
“`

1、railsの

元記事を表示

【個人開発】筋トレ × 音ゲー × EDMの新感覚トレーニングアプリ「Muscle Beat」をリリースしました?

[![Image from Gyazo](https://i.gyazo.com/e53f4d2fd2bde97ad508a7716e5ad6ed.png)](https://www.muscle-beat.com)

EDMの音ゲーに合わせて筋トレを行えるサービスをリリースいたしました!

**▼ サービスURL(スマホ専用)**
https://www.muscle-beat.com

**▼GitHub**
https://github.com/jibiking/muscle_beat

## はじめに

はじめまして!
[駆け出し筋肉エンジニアのJibiki](https://twitter.com/ji_bi__)と申します?

– **時間がなくとも、筋トレを知らなくとも、楽しくトレーニングを行えるサービスを開発したい!**
– **普通の筋トレでは満足できない体の人でも楽しめるサービスを開発したい!**

そのような想いから、Muscle Beatの開発に至りました?

## トレーニング手順

**1. All Beats画面からプレイしたい曲を選択**
★ モ

元記事を表示

アプリケーションの雛形を作成する。

駆け出しエンジニアのTakaです。
本日はアプリケーションの雛型の作成の仕方を学んだのでシェアさせて頂きます。

まず、大切になってくるのは、
1,今から自分の作成するアプリケーションの内容を考えることです。どんなアプリを作りたいのかしっかりと考えます。

2,次にアプリケーションの名前を考えます。

3,その後に、アプリケーションの雛型を作ります。
その際に使うのがrails new コマンドです。

rails newコマンドでアプリケーションに必要になってくる基本的なデータやファイルは一式揃います:relaxed:

“`
rails new 作成するアプリケーションの名前
“`

4,次にデータベースを作成します。
※データベースとは決まった形で整理したデータの集まりのこと。
例えば、氏名、電話番号、社員番号などがバラバラに整理されていたら分かりにくいように、整理してまとめたもののことをデータベースという。
アプリケーションが生み出すデータを保存するところです。
“`
rails db:create
“`

5,データベースを作成した後にサーバーを起動します。
“`

元記事を表示

チェックボックスの作り方

チェックボックスの作り方を調べていると、いくつかの方法があることがわかった。

①“check_box“ モデルに関連するチェックボックス  
 ※パラメーターとして値を保存したい場合
②“check_box_tag“ モデルに関連しないチェックボックス
③“collection_check_boxes“ 複数選択のチェックボックス

今回実装したい内容は①に当てはまるので、それをまとめる。

### check_box

まずはマイグレーションファイルに以下を入力。
“`ruby:
class Createxxxxxx < ActiveRecord::Migration[6.0] def change create_table :xxxxxx do |t| t.boolean :カラム名  # 追記 t.timestamps end end end ``` 次にビューファイル。 ```html: <%= f.check_box 'カラム名', {:checked => true}, checked_value

元記事を表示

shionさん主催のコワーキングスペース C作業場さんの勉強会がいい感じだったので、Rails Pluginを「リリースした話」

# この記事は

データベースを使って手っ取り早くツリーダイアグラムを描きたいんだよって人向け

![output.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179979/0356e77c-db06-7f27-5adf-2a36347fcf2d.gif)

* gem
* [acts_as_tree_diagram | RubyGems.org | コミュニティのGemホスティングサービス](https://rubygems.org/gems/acts_as_tree_diagram)
* github
* [smapira/acts_as_tree_diagram](https://github.com/smapira/acts_as_tree_diagram)

# やりたかったこと

mermaidもいいけど出来るだけ手作業はしたくなかった

# 前提

* Rails
* ActAsTree

# やり方
“`ruby
# Gemfile
gem “acts_as_tree

元記事を表示

rails_tutorial chapter8 <忘備録>ログインとログアウト

# ルーティングの一覧
| 1 | 2 | 3 | 4 | 5 |
|:-:|:-:|:-:|:-:|:-:|
| HTTPリクエスト | URL| 名前付きルート| アクション名| 用途 |
| GET | /login | login_path | new | 新しいセッションのページ(ログイン) |
| POST | /login |login_path | create | 新しいセッションの作成(ログイン) |
| DELETE |/logout | logout_path | destroy | セッションの削除(ログアウト) |

ユーザー登録フォームでform_withヘルパーを使い、ユーザーのインスタンス変数@userを引数にとっていました。
すると、railsが勝手に「フォームのactionは/usersというURLへのPOSTである」と解釈をして、createまで実行してくれました。

“`
<%= form_with(model: @user, local: true) do |f| %>
.
.
.
<% end %>
“`

元記事を表示

Railsで作成したアプリをGitHubで管理する方法

# 結論    

アプリを保管するための倉庫を`自分のパソコン`(local repository)と`GitHub`(remote repository)上に作成して、`送り込む`(push)。

### ちなみに

remote: 遠隔
local: 地元
repository: 倉庫、保管庫

## 1.リモートリポジトリを作成

“`
GitHubで新規リポジトリを作成する。
“`

## 2.ローカルリポジトリを作成し、送り込むための準備

“`ターミナル
$ git init        #remote ripositoryが作成されるだけ

$ git add .   

# 編集中のコードをGitで管理対象にするという意味のコマンド   
# ‘index’にステージングともいう

$ git commmit -m ”どんな機能を実装したのか等のコメントを残す”

#local repositoryにプログラムを保存するコマンド
#これでremote repositoryに送り込む準備は整った
“`
### ちなみに
initialize

元記事を表示

Rails MVCモデルとは何か

# 結論

アプリケーション設定を整理するための概念。

この概念に基づいてアプリ制作を行うことで、**開発がしやすくなったり**、**保守性が高くなったり**します。

Q:開発がしやすい?

A:プログラムを書き込む場所がルール化されているので作業が早くなる。

例えば`夕飯を用意してください。`と指示されるよりも`カレーを作ってください、ただし人参は抜きなさい`とルールが決められている方が動きやすいのです。

Q:保守性が高い?

A:メンテナンスのしやすさのこと

つまり、こういう考え方で作ると安全で壊れにくいアプリケーション作りやすいよってことです。

# ちなみに

Model View Controller の頭文字です。
それぞれ役割が分かれていて、どこに何のプログラムを書くか決まっています。

M: 模型、型

V: 光景、眺め

C: 支配者、制御装置

## Modelの役割

データベース操作に関わる処理を作る

商品情報や、顧客情報のデータを扱うデータベース(db)のデータ操作をするためのプログラムを作る。

例:個人情報に関するデータや自己紹介メソ

元記事を表示

rails 詳しいフォロー機能の仕組み

## 初めに

今回この記事では、フォロー機能について詳しく解説していきたいと思います。
他の人の記事を読んでも仮想モデルってなんだよ、、、
さっぱりわからんわと感じた人にぜひ読んでいただきたいです。
フォローの記述の設定はこの記事で行いますが、フォロー一覧ページの作成やフォローボタンの作成は行わないので実装だけしたい人は下記で載せさせていただいておりますサイトを参照していただけますと幸いです。

## 前提の状態
– テーブル構成(schemaファイル)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1717562/f12a9ea4-8f74-24d1-8f3f-fbb885a65605.png)

– 備考
– userテーブルは、deviseを使用。
– 基本的にconsoleからデータを入れてみています。

– 参考になるフォローの記事
[こちら](https://note.com/memomemotarou/n/n673f99a79ffe)の記事では、解説

元記事を表示

【Laravel】get() / first() / find()の返り値の違い

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## 状況

deleteする際エラーが発生。

“`
Method delete does not exist.
“`

“`php
public function destory($id)
{
$article = Article::where(‘id’, $id)->get();
$article->delete();

return redirect()->route(‘home’);
}
“`

## 原因
“`Article::where(‘id’, $id)->get();“`の返り値が**Collectionクラス**だから。
Collectionクラスに対してdeleteできないというエラーだった。

(Collectionクラスは、RailsでいうEnumerableモジュールだと思う)

https://docs.ruby-lang.org/ja/latest/class/Enumerable.html

“`php
>>> Article::where(‘id’, 9)->

元記事を表示

Railsアプリでデータベースを作成する方法

# 結論
ターミナルで以下を入力する
“`
$ rails db:create
“`
これでデータベースを作成できます。

## 成功した場合
“`
Created database ‘db/development.~~~~’
Created database ‘db/test.~~~’
“`
`データベースが作成された`と表示されます。

## ちなみに 
rails db:create を2回以上打ち込むと
“`
Created database ‘db/development.~~~~’already exists
Created database ‘db/test.~~~’already exists
“`

`既にデータベースが存在している`とエラーが表示されます。

以上です。

元記事を表示

Railsを使ってアプリケーションを立ち上げる方法

# 結論
ターミナルで以下を入力
“`
$ rails new アプリ名

#具体例
$ rails new hello_world
“`
これで`hello_world`という名前のディレクトリが生成されます。その中にはrailsアプリを動かすために必要なファイルも生成されています。

## Railsバージョンを指定してアプリを立ち上げる場合
“`
$ rails _20.2.2_new アプリ名
“`

これでRailsのバージョンを指定することが出来ます。
実際に入力する際は、制作環境に応じたバージョンを入力してください。

## Railsバージョン,データベースを指定してアプリを立ち上げる場合
“`
$ rails _20.2.2_new アプリ名  -d DB名
“`
これでrailsのバージョン、データベースを指定してアプリを立ち上げることが出来ます。実際には制作環境に応じたデータベース名を入力してください。
(任意のDB名を入力してください)

元記事を表示

Rails のscaffold

駆け出しエンジニアのTakaです。
本日からQittaを書くことにしました。
よろしくお願いします。
本日のテーマは、scafoldです

アプリを作るためには、viewやcontroller,routesなど様々な機能が必要になってきます。
1,scaffoldはこれらの作業をまとめて行って、簡単にアプリケーションの雛形を作ってくれます。

“`
rails generate scaffold post title:string body:text
“`
Postモデルは名前を表し、「title」属性と、「body」属性を持つアプリが作成される。

2,必ず、データベースとやりとりできるマイグレーションファイルの作成もしておきましょう。
“`
rails db:migrate
rails server
“`

3,その後にlocalhost:3000に入ることでアクセスすることができる。

![MVC.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358181/75347f32-eda

元記事を表示

【Docker】RailsにNginxを導入する方法

## はじめに
 本記事は、プログラミング初学者、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

## Nginx + Puma + Rails + MySQL
Dokerfileで親ディレクトリを参照するにはDocker-composeのbuildの箇所でcontextとdockerfileを指定します。

“`docker-compose.yml
version: ‘${COMPOSE_VER}’
services:
db:
platform: linux/x86_64
build: ./docker/db
command: –default-authentication-plugin=mysql_native_password && bash -c “chmod +x /docker-entrypoint-initdb.d/00_grant.sh”
heal

元記事を表示

【個人開発】ガン飛ばしてちょいワル気分になれるサービスを開発しました(-“-#)

# はじめに
突然ですが大人になるにつれ怒りの感情を表に出さなくなったと思うことはありませんか?
今回はそんな世の大人達の為にガン飛ばして遊べる~~物騒なクソ~~コンテンツアプリを作成しました!
– 普段優しそうというイメージを持たれてるけど、たまには悪ぶりたい人
– 舐められたくない人
– いざという時のために相手を威嚇する練習をしたい人
– 今むしゃくしゃしている人
– 東京リベンジャーズが好き!

そんな方々に是非使ってみて欲しいサービスです◎

本記事では主な機能や技術面の紹介をさせて頂きます。
面白い!と思って頂けたらエンジニア冥利に尽きます…!

# サービス概要
[![Image from Gyazo](https://i.gyazo.com/900b2d9980232c075a0feb785600a0bf.png)](https://gyazo.com/900b2d9980232c075a0feb785600a0bf)
カメラに向かってガン飛ばすだけ!
「たまにはちょっと悪ぶりたい〜(-“-#)」
そんな少しやんちゃな想いを叶えるサービスです◎

https://

元記事を表示

.envファイルについて

# はじめに
アプリ制作を進める中でよく分からず.envファイル使用していたのでこちらについて調べて見ました。

# .envファイルとは
環境変数を書きことができるファイルのことです。
こちらを使用することで、開発環境と本番環境を切り替えたり、データベースなどの接続情報の変更を行うことができます。
例えば開発環境では簡易的に利用できるsqliteのデータベースに接続し、本番環境ではmysqlのDBに接続といった変更が可能です。

# 環境変数とは
全てのプログラムで一緒に使える値を入れておく箱のことです。
例えば、アプリのフォルダーの直下に.envファイルに環境変数を書き込めば、そのフォルダー内で環境変数が扱うことができます。

# Railsで.envファイルを使用する場合
Gemfileに以下を記述

“`Gemfile
gem ‘dotenv-rails’
“`

gemを インストール

“`bash
$ bundle install
“`
こちらを使用することで、プロジェクト毎に環境変数が扱えるようになります。
# 使用例
簡単ではありますが、使用例を紹介します。

元記事を表示

Rails migration

### 命名規則
“`terminal.sh
rails generate migration CreateProducts name:string
rails generate migration AddPartNumberToProducts
rails generate migration RemovePartNumberFromProducts
rails generate migration AddUserRefToProducts user:references
rails generate migration CreateJoinTableCustomerProduct
“`

### changeを使う
Active Recordがマイグレーションを逆進させる(以前のマイグレーションに戻す)方法を自動的に理解してくれるため、多くの場面で利用できます。up/downを書かなくて良い。

– add_column
– add_foreign_key
– add_index
– add_reference
– add_timestamps
– change_colum

元記事を表示

OTHERカテゴリの最新記事