- 1. #Rails / has_one and has_many association both / without DB foreign key
- 2. #Rails で DBに外部キー制約がない場合 has_one と has_many のアソシエーションを両方指定できそうだ
- 3. #Rails が自動付与した fk_rails_… という名前の外部キーをマイグレーションで削除する
- 4. #Rails remove auto generated name fk_rails_… foreign key migration
- 5. Ruby on Rails APIモードでいいね機能を実装する【初学者のReact×Railsアプリ開発 第6回】
- 6. #Ruby or #Rails で unixtimestamp の数値を Time.zone の日時に変換する
- 7. Rails6 rails consoleからカラムのデータ型を確認する
- 8. Rspec, Factory_bot, Fakerを用いたモデル単体テスト
- 9. Action Text(Trix Editor)でdivタグをpタグに、H1をH2に変更する方法
- 10. 【Rails入門】エラーと仲良くなれるかもしれない開発手法【読み物】
- 11. Ruby on Rails APIモードのCRUD実装 【初学者のReact✗Railsアプリ開発 第5回】
- 12. Railsチュートリアルメモ – 第7章
- 13. 【Rails】kaminariでページネーションを実装
- 14. おれ達のチートシート
- 15. RailsのActiveStorageで画像が表示されずTypeError(no implicit conversion of nil into String)がでるようになった
- 16. デプロイする度にアップロードした画像が表示されなくなる問題への対処|Active Storage
- 17. Reactのreduxを用いたログイン処理周りの実装【初学者のReact✗Railsアプリ開発第4回】
- 18. Railsチュートリアルメモ – 第6章
- 19. Django Polymorphic Associations Tutorial
- 20. resourcesを多段階ネストさせた時のform_forメソッド
#Rails / has_one and has_many association both / without DB foreign key
You can specify both
“`rb
class User < ApplicationRecord has_one :book has_many :books end ``` If use has one association and user has many books ``` user.book ``` then it maybe returns newest one "book" instance but it does not return older other instances # Original by Github issue https://github.com/YumaInaura/YumaInaura/issues/2940
#Rails で DBに外部キー制約がない場合 has_one と has_many のアソシエーションを両方指定できそうだ
You can specify both
“`rb
class User < ApplicationRecord has_one :book has_many :books end ``` userが持つbookが複数ある場合にhas_oneを見ると、最新のbook一個だけが得られた ```rb user.books.size # 3 user.book # Return latest book instance a user has ``` # Original by Github issue https://github.com/YumaInaura/YumaInaura/issues/2941
#Rails が自動付与した fk_rails_… という名前の外部キーをマイグレーションで削除する
直接指定出来せるっぽい
もっと書き方やり方がありそうだけど
“`rb
class RemoveUniqueIndexFromSomeTable < ActiveRecord::Migration[5.2] def change remove_foreign_key :some_tables, name: "fk_rails_43240587ab" end end ``` ```rb db:migrate == 20200112003437 RemoveUniqueIndexFromSomeTable: migrating =============== -- remove_foreign_key(:some_tables, {:name=>“fk_rails_43240587ab”})
-> 0.0250s
…
“`# Original by Github issue
https://github.com/YumaInaura/YumaInaura/issues/2939
#Rails remove auto generated name fk_rails_… foreign key migration
it is the wrong way?
“`rb
class RemoveUniqueIndexFromSomeTable < ActiveRecord::Migration[5.2] def change remove_foreign_key :some_tables, name: "fk_rails_43240587ab" end end ``` ```rb db:migrate == 20200112003437 RemoveUniqueIndexFromSomeTable: migrating =============== -- remove_foreign_key(:some_tables, {:name=>“fk_rails_43240587ab”})
-> 0.0250s
…
“`# Original by Github issue
https://github.com/YumaInaura/YumaInaura/issues/2938
Ruby on Rails APIモードでいいね機能を実装する【初学者のReact×Railsアプリ開発 第6回】
#やったこと
* ログイン中のユーザーが、ポスト(投稿)に対して、「好き」「嫌い」「興味ない」を投票でき、更新もできるようにした。
* likesテーブルをpostsテーブル、usersテーブルとリレーションさせた。
* counter_cultureを使って、関連レコードの集計(postsテーブルのsuki_countなど)を行った
* PostgreSQL 12の新機能であるGenerated Columnを使用して、関連レコードの集計結果の計算(postsテーブルのall_count, suki_percent)を行わせた。###完成したデータベースのイメージ(dbconsoleを使って確認)
“`
app_development=# select * from likes;
id | user_id | post_id | suki | created_at | updated_at
—-+———+———+——+—————————-+
#Ruby or #Rails で unixtimestamp の数値を Time.zone の日時に変換する
# In Ruby need require
“`
require ‘active_support/core_ext’
“`# Time
“`rb
Time.at(1580655600)
# => 2020-02-02 15:00:00 +0000
“`# Timezone UTC
“`rb
Time.use_zone(‘UTC’) { Time.zone.at(1580655600) }
# => Sun, 02 Feb 2020 15:00:00 UTC +00:00
“`# Timezone JST
“`rb
Time.use_zone(‘Tokyo’) { Time.zone.at(1580655600) }
# => Mon, 03 Feb 2020 00:00:00 JST +09:00
“`# Original by Github issue
https://github.com/YumaInaura/YumaInaura/issues/2937
Rails6 rails consoleからカラムのデータ型を確認する
# 目的
– rails consoleからのカラムのデータ型の確認方法をまとめる
# 実施方法
1. railsアプリ名フォルダ直下で下記コマンドを実行してrails consoleを起動する。
“`terminal
$ rails console
“`1. rails console上で下記コマンドを実行してカラムのデータ型を確認する。
“`
>モデルの名前.columns_hash[‘カラムの名前’].type
“`
Rspec, Factory_bot, Fakerを用いたモデル単体テスト
# はじめに
– Rspec, Factory_bot, Fakerを用いたテストについてメモを残したいと思います。
– 今回はuserモデルでテストします。
– 開発環境
– ruby 2.5.1
– rails 5.2.4.1# gemの導入
“`ruby:Gemfile
group :development, :test do
gem ‘rspec-rails’
gem ‘factory_bot_rails’
end
group :test do
gem ‘faker’
end
“`
gemを追加したら、bundle installする。
# Rspecの設定
“`ruby:terminal
$ rails g rspec:install
# Rspecの設定ファイルが作成される。
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
“`
– spec/spec_helper.rb ・・・R
Action Text(Trix Editor)でdivタグをpタグに、H1をH2に変更する方法
`/app/javascript/packs/application.js`などを編集します。
“`
var Trix = require(“trix”)
require(“@rails/actiontext”)//divなのをpタグに
Trix.config.blockAttributes.default = {
tagName: “p”,
breakOnReturn: true
}//h1タグをh2タグに
Trix.config.heading1.subHeading = {
tagName: “h3”
}
“`本当は`breakOnReturn: true`で、文字を入力中にEnterを押すと新しい段落が始まるはずなのですが、私の環境ではそうなりません。わかる人がいれば教えていただきたいです
そのほかのブロック要素については、[trix/block_attributes.coffee at 3ec7bac3bcef51b134e284a2c0c79c9e9350e75b · basecamp/trix](https://github.com/bas
【Rails入門】エラーと仲良くなれるかもしれない開発手法【読み物】
どんもー、[@snskOgata](https://twitter.com/snskOgata)です。
今回はみんな大好き、エラーとの付き合い方を書いていこうかなと思います。
まあ、ちょっとした読み物として楽しんでもらえたらと思います。
対象読者は以下の2つに当てはまる人です。
**・エラーという存在が憎くて憎くてしょうがない
・Railsアプリを読み物を見ながら1, 2度作ってみたけど、実際に自分で何も見ずに作るとなったらどうやっていけばいいかわからない**
エラーが出るとどうしても怒られているような感覚になってしまいますが、
そうじゃなくて本当は、**エラーは正解への道筋を示してくれる相棒**のようなものだということを感じてくれると嬉しいです。
実際やっていくこととしては、
**エラーを吐かせながら、それに従ってアプリケーションを作っていく**ということをしていきます。
これによりひとつずつ着実に作業を進めることができます。
アプリの内容は、つぶやきを作成しその一覧を表示する簡単なアプリケーションです。
途中で大体もう流れがわかったら最後まで飛ばしてくれても
Ruby on Rails APIモードのCRUD実装 【初学者のReact✗Railsアプリ開発 第5回】
# やったこと
* Ruby on RailsのAPIモードでCRUDを実装する(ただし、更新(U)はなし)# 前回の記事
[Reactのreduxを用いたログイン処理周りの実装【初学者のReact✗Railsアプリ開発第4回】](https://qiita.com/dl10yr/items/e383df05d6b322785d3d)
#参考にさせていただいた記事
https://qiita.com/k-penguin-sato/items/adba7a1a1ecc3582a9c9# 実装手順
###モデルとコントローラーの作成“`
$ docker-compose run api rails g model post content:string
$ docker-compose run api rails g controller api/v1/posts
“`
生成されたマイグレーションファイルを編集します。“`ruby:db/migrate/XXX_create_posts.rb
class CreatePosts < ActiveRecord::Migr
Railsチュートリアルメモ – 第7章
[メモの目次記事はこちら](https://qiita.com/yokohama4580/items/dedfd5510080273dc2a0)
[Railsチュートリアル第7章へのリンク](https://railstutorial.jp/chapters/sign_up?version=5.1#cha-sign_up)
# 第7章 ユーザー登録
## 7.1 ユーザーを表示する
### ポイント
#### デバッグ
– `<%= debug(params) if Rails.env.development? %>`で画面にデバッグ情報を表示できる。
– `if Rails.env.development?`で開発環境のみに表示するよう制限している
– コントローラー内にdebuggerを記載して画面を表示すると、rails serverを起動しているコンソールがコマンド待受け状態になり、debuggerが呼び出された状態のままでrails consoleの操作を実行できる#### Sassのミックスイン
@mixinで定義した内容を@includeで呼び出せる
【Rails】kaminariでページネーションを実装
##基本
“`rb:Gemfile
gem ‘kaminari’
“`
“`terminal
$ bundle install
“`
“`rb:Controller
def hoge
@users = User.page(params[:page]).per(10)
end
“`
“`rb:View
<%= paginate @users %>
“`##日本語化
localeファイルを作り、以下を記述。“`config/locales/kaminari_ja.yml
ja:
views:
pagination:
first: “« 最初”
last: “最後 »”
previous: “‹ 前”
next: “次 ›”
truncate: “…”
helpers:
page_entries_info:
one_page:
display_entries:
zero: “”
おれ達のチートシート
### Posgre・Railsの接続の切り方
> https://qiita.com/motty93/items/d22c1eb8f5128f8cd7f8
PG:co※解決できたエラー(ポスグレの.pidを消しまくった)
![https___qiita-image-store.s3.amazonaws.com_0_9956_9b4505cd-b5dd-90d7-25a6-d17607233581.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491757/e9295594-c5ee-d71c-e9c7-9eafa8ab0fa8.png)###Strong Parameters(railsでDBに入れる値を制限することで、不正なパラメータの入力を防ぐ仕組み)
>https://qiita.com/mochio/items/45b9172a50a6ebb0bee0
###RailsでRMagickを使う
>https://qiita.com/yukiweaver/items/52c45f44
RailsのActiveStorageで画像が表示されずTypeError(no implicit conversion of nil into String)がでるようになった
# 状況
ローカルで開発していたアプリをDockerで構築し直していたらActiveStorageを使用して表示していた画像が表示されなくなった
ログを見ると以下のようにTypeError (no implicit conversion of nil into String)が発生してる“`console
Started GET “/rails/active_storage
~ (省略)~
Processing by ActiveStorage::DiskController#show as PNG
Parameters: {“content_type”=>”image/png”, “disposition”=>”inline;
~(省略)~
Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms)TypeError (no implicit conversion of nil into String):
rack (2.1.0) lib/rack/files.rb:25:in `expand_path
デプロイする度にアップロードした画像が表示されなくなる問題への対処|Active Storage
Railsアプリケーションで、デプロイする度にアップロードした画像が表示されなくなる事象が発生したので、その時の解決策を残します。
Capistrano3で自動デプロイをしていて、画像のアップデートにはminimagickを使用。画像のアップロードに関することなので、Active Storageの設定を修正します。
共有フォルダに画像ファイルを保存し、デプロイ時にデータが上書きされないようにします。やることは2つだけです。
①Active Storageの画像の保存先を変更し、
②共有フォルダへシンボリックリンクを貼る。##開発環境
・Rails 5.2.3
・Ruby 2.5.1
・ConoHa VPS
・CentOS 7.6
・Capistrano3
・Nginx
・Unicorn##①Active Storageの画像保存先の変更
Active Storageの画像の保存先はstorage.ymlで設定します。
保存先がrootディレクトリ直下のstorageだったのを”public/storage”に変更します。
“`config/storage.
Reactのreduxを用いたログイン処理周りの実装【初学者のReact✗Railsアプリ開発第4回】
#やったこと
フロントエンド: React, バックエンド: Rails(APIモード)のアプリ開発における基本的なログイン処理周りの実装
![test200111.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367226/63864c6f-ff09-dc0a-8d1c-eb1fa6cc55e1.gif)* 未ログインなら、/loginにリダイレクト
* 確認中は「Loading」を表示させる
* Railsのログイン機能は、devise_auth_tokenを利用: [【Ruby on Rails】devise_token_authでTwitterログイン機能の実装](https://qiita.com/dl10yr/items/a338ca956090237d8ca6)
* ログイン中のユーザーの情報は、reduxを用いて状態管理する。
![スクリーンショット 2020-01-12 15.17.24.png](https://qiita-image-store.s3.ap-northeast-
Railsチュートリアルメモ – 第6章
[メモの目次記事はこちら](https://qiita.com/yokohama4580/items/dedfd5510080273dc2a0)
[Railsチュートリアル第6章へのリンク](https://railstutorial.jp/chapters/modeling_users?version=5.1#cha-modeling_users)
## 6.1 Userモデル
Active Recordの使用方法についての章。Active RecordはたぶんRailsの中で最も核となるライブラリ。### ポイント
– 以下コマンドでモデルを生成し、DBに反映できる
– `rails generate model User name:string email:string`
– `rails db:migrate`
– Active Recordを使うことで、RailsからDBの詳細を隠蔽し、切り離すことができる。
– SQLについて学ばずにDBに対してCRUD操作を行える。## 6.2 ユーザーを検証する
バリデーションの実装方法についての章。
###
Django Polymorphic Associations Tutorial
## はじめに
私の記事[Djangoが他のPolymorphicと挙動が異なる件
](https://qiita.com/cohey0727/items/c5c0c03670ae191c6348)でDjangoのPolymorphicModelがいわゆるポリモーフィック関連と異なることを記事にしました。
今回は、「ではDjangoで**ポリモーフィック関連**を実装するにはどうすのか」という点について解説します。## 環境
– Python 3.7.5
– Django 2.2.1
– SQLite## ゴール
RailsGuideの[PolymorphicAssociations](https://guides.rubyonrails.org/association_basics.html#polymorphic-associations)の章では以下のようにポリモーフィック関連が実装されています。“`ruby
class Picture < ApplicationRecord belongs_to :imageable, polymorphic: true en
resourcesを多段階ネストさせた時のform_forメソッド
##概要
resourcesを多段階ネストさせた時のform_forメソッドの使用方法に関する記事があまりなかったので、備忘録として纏めます。
スポット(Post)ごとに写真(Image)が投稿でき、写真ごとにコメント(Comment)が投稿できる旅行カタログアプリケーションを作成しております。
ビューはHamlで書いております。
作成途中のため、細かいところはご容赦くださいませ。
##ルーティング
“` routes.rb
resources :posts, only: [:index, :new, :create, :edit, :update] do
resources :images, only: [:index, :new, :create, :show] do
resources :comments, only: [:index, :create]
end
end
“`##コントローラ
1つ目のネストのimageは下記の通り。
“` images_controller.rb
class ImagesControl