タグ

Railsに関するshozzyのブックマーク (176)

  • Railsで中間テーブルと関連テーブルのすっきりとしたインサート - ECのウェブ担当者のメモ

    RailsのActiverecordで中間テーブルと関連テーブルを一気にインサートする方法です。 モデルの関係は、以下の様に User <=> UserSchedule <=> Schedule UserとScheduleの間にUserScheduleが中間テーブルとして存在することを想定します。 Activerecodeの関連テーブルの設定は以下のようになります。 User, Schedulee, UserScheduleにそれぞれhas_many, through, belongs_toを設定します。 設定に関しては、1対多 や 多対多で変わってくるので適宜変更してください。 下記の例では多対多を想定しています。 user.rb class User < ActiveRecord::Base has_many :user_schedules has_many :schedules, t

    Railsで中間テーブルと関連テーブルのすっきりとしたインサート - ECのウェブ担当者のメモ
    shozzy
    shozzy 2020/01/26
  • accepts_nested_attributes_forの使い方 - Fumiro Yoshihara’s Blog

    参考 何がしたいか モデルで accepts_nested_attributes_for を宣言 form を作る view でネストするパラメータを作るための form を作成 ストロングパラメータ save ポイント まとめ 参考 http://kzy52.com/entry/2013/07/10/200144 何がしたいか form でネストする params を作って異なる model の属性を格納し、一回のアクションで同時にsaveしたい。 モデルで accepts_nested_attributes_for を宣言 ネストさせるパラメータの親のモデルクラスで accepts_nested_attributes_for を記述する。引数にはネストの子のモデルをシンボルで指定。 class Teacher < ApplicationRecord belongs_to :school

    accepts_nested_attributes_forの使い方 - Fumiro Yoshihara’s Blog
    shozzy
    shozzy 2020/01/25
  • Rails いつも忘れる集 / アソシエーションのあるモデルを含んだフォーム作成

    いっつも何かつくる時にググっているもの。 いいかげん記憶したいけど、いつも忘れる…。 関係モデルを含むフォームの作成 has_many や has_one などでアソシエーションがあるモデルを含むフォームを作成したい時。 models/user.rb accepts_nested_attributes_for が大事。

    Rails いつも忘れる集 / アソシエーションのあるモデルを含んだフォーム作成
    shozzy
    shozzy 2020/01/25
  • [*Rails*] deviseの使い方(rails5版) - Qiita

    はじめに 2020/04/04 Rails6版はこちら [Rails] deviseの使い方(rails6版) Rails5で再検証版です。 以下のRails4のときのやつを現状(2016/11/12, 13)のバージョンで確認して、一部バージョン上がってうまく動かないところを修正したりした感じです。 [Rails] deviseの使い方(rails4版) 【前回】 rails : 4.2.0 ruby : 2.2.0 devise: 3.4.1 ↓ 【今回】 rails : 5.0.0.1 ruby : 2.3.1 devise: 4.2.0 あと、上の記事で最後に「全部まとめきれてないので、忘れないうちにちょっとずつ追加していこうと思います。」とか書いていながら全く追加することはなかったので、追加しようと思ってたものをちょっとだけ思い出して追加したバージョンです。 deviseとは ユ

    [*Rails*] deviseの使い方(rails5版) - Qiita
  • Ruby on RailsでDB マイグレーションする際にシステム障害を回避するための工夫 - LCL Engineers' Blog

    Webエンジニアの森脇です。 LCLでは、DB設計変更で、DBマイグレーションをする際にシステム障害を回避するためのいくつか工夫をしています。今回は、その内容を簡単にご紹介いたします。 migration作成時の注意 ブランチ戦略 原則、migrationのブランチは独立させるようにしています。 migrationとコードのデプロイはタイミングを分けたほうが安全であり、さらに他のコード修正と混ぜると、切り戻し等がやりづらいくなるため 新規JOBなど既存コードに影響しない場合は、独立させなくても可 既存コードに影響を与えない migration実行後も既存コードで正常稼働するように、migrationを作成します。 以下にケース別の手順を紹介します。 テーブルの新規作成 テーブルの新規作成は特に意識することはありません。 ただし、既存テーブルへ外部キーを貼る場合は、後述の手順に従い注意が必要

    Ruby on RailsでDB マイグレーションする際にシステム障害を回避するための工夫 - LCL Engineers' Blog
  • rails で /users/:id ではなく /:username な routing にする方法 · Yuichi Takada

    rails で普通に scaffold すると id が URL に入って example.com/users/:id となる。 これを twitter.com/myname とか github.com/yourname みたいにしたい時がある。 実現には 2 通りの方法があると思われる。 to_param を使う方法 activerecord に to_param というメソッドがあって、これを使うと URL の :id の部分に id 以外を指定できるようになる。 user.rb class User < ActiveRecord::Base validates_presence_of :username validates_uniqueness_of :username, case_sensitive: false def to_param username end end

    shozzy
    shozzy 2020/01/20
    REST APIの仕様決めの参考に。
  • Railsで大量データを扱うときに気をつけていること - LCL Engineers' Blog

    バックエンドエンジニアの横塚です。 Railsで中規模以上のサービスを運用していると、大量のレコードやcsvをバッチで処理したい場面などが出てくると思います。 当たり前のように意識できている人も多いかと思いますが、今回はおさらいの意味も込めてバッチで大量データを扱うときに気をつけていることをまとめていこうと思います! 大量レコードに対して処理をするときはfind_eachやfind_in_batchesを使う DBからデータを取得してきて処理をしたい場合、eachで処理しようとすると対象データがすべてメモリに展開されてしまいますが、find_eachは1行ずつメモリに展開するため、レコード数を気にせず処理をすることができます。 User.each do |user| # なんか処理 end ↓ User.find_each do |user| # なんか処理 end また、find_in_

    Railsで大量データを扱うときに気をつけていること - LCL Engineers' Blog
  • 213526#JSON-Web-Token-JWT-%E3%81%B8%E3%81%AE%E5%AF%BE%E5%BF%9C

    はじめに 今回追加した API API を追加した目的 最終的に作った API の仕様 使い方 API トークンの発行 エクスポータの設定 エクスポータの実行 JSON Web Token (JWT) への対応 JWT とは? JWT を操作するための gem Rails アプリに組み込む - トークンの発行 Rails アプリに組み込む - トークンの検証 Cross-Origin Resource Sharing (CORS) への対応 CORS とは? CORS に対応するための rack-cors gem rack-cors の注意点 まとめ はじめに https://www.admiral-stats.com/ という URL で、Ruby on Rails 5 で作った Admiral Stats というサービスを動かしています。このサービス自体については、過去の記事 を参照く

    213526#JSON-Web-Token-JWT-%E3%81%B8%E3%81%AE%E5%AF%BE%E5%BF%9C
    shozzy
    shozzy 2020/01/16
    config/initializers/cors.rbも手動で作る模様。自動で作られるのはAPIモードでRails環境を構築した場合のみっぽい。あとで試す。
  • [Rails] deviseのサインアップを無効にする

    一瞬で終わる簡単な話だけど一応メモ。 シチュエーションユーザー登録の無いサイトだが運営者のデータ管理用にrails_adminなどの管理パネルを入れたい ↓ そのページのアクセス権限をdevise+cancanなどで手軽に導入したい ↓ deviseを普通に入れるとusers/sign_upのような誰でもユーザーを作れるルートが公開されてしまうのでこれを禁止したい 例えばこんな状況。 解決策deviseの管理するmodel(userならapp/models/user.rb)から:registerableを抜く berore: class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :track

    [Rails] deviseのサインアップを無効にする
  • Devise に初期ユーザを追加 - Ruby and Rails

    db/seeds.rb に下記を書く。 User.create(email: 'admin@example.com', password: 'password') User.create(email: 'manager@example.com', password: 'password') User.create(email: 'user@example.com', password: 'password') 下記で登録できる。 $ rake db:seed

    Devise に初期ユーザを追加 - Ruby and Rails
    shozzy
    shozzy 2020/01/13
    「なるほど、これを仕込んでおけば本番環境でも」と思ったが、パブリックなGitHubにはアップできないね?環境変数から初期ユーザのユーザ名とパスワードを取得する仕掛けにすればいいのか。
  • Deploying your Nuxt+Rails API app to production with Heroku

    shozzy
    shozzy 2019/12/20
    RailsとNuxtをherokuに入れる方法。1つのdynoに入れられるのか2つのdynoが必要なのかは要確認。
  • RailsでAPIサーバを開発する(AngularJS, Ruby on Rails, SPA) | DevelopersIO

    RailsでJSONを返すAPIアプリケーションを3週間ぐらい試行錯誤しながら作成しています。少しですがノウハウも溜まってきたのでここにまとめておこうと思います。 今回のアプリケーションの構成は大体次のようになっています。 RailsAPIサーバ(一般公開するAPIではなくSPA(シングルページアプリケーション)のサーバとしてJSONを返却する。HTMLは返却しない) クライアントサイドはAngularJSで画面遷移、Viewの描画まで管理する DBMySqlSession管理はRedis(まだローカル開発なのであまり関係無い) チームはサーバサイド、クライアントサイドで完全に分担して二人で作成しています(自分はサーバサイド担当)。 このブログエントリーでは次のことを書きます。 APIのルーティングの設定(JSONのみ返すようにする方法) Session管理(CSRFトークンの受け渡

    RailsでAPIサーバを開発する(AngularJS, Ruby on Rails, SPA) | DevelopersIO
  • Rails5 APIで認証付きのWebAPIを作ってみる - Qiita

    はじめに Railsもバージョン5になってから、Web APIを簡単に作れるような仕組みが色々増えました。 認証周りの仕組みもRailsは、手軽にできるようになっているみたいなので試してみます。 使用ソフトウェアのバージョン情報 ruby 2.4.1p111 (2.3でも動作確認しました) Rails 5.1.3 (5.0.1でも動作確認しました) 記事の中でcurlを使ってますが、RESTクライアントって種類のプラグインがChromeなどではいくつか公開されているので、そちらを使ってみてもいいかもしれません。 準備(アプリケーションの土台を作る) まずはアプリケーションの土台を作ります。主に作るのは2つのリソース(MemoとUser)です。 Memoが認証で守りたいリソースで、Userはログイン情報とかを持っているリソースという設定です。 下記のコマンドを順番に実行してください。 $ r

    Rails5 APIで認証付きのWebAPIを作ってみる - Qiita
    shozzy
    shozzy 2019/10/03
    認証つきAPIの作り方
  • Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT
    shozzy
    shozzy 2019/09/23
    (古い記事だけど)中身を理解してれば、scaffoldも便利に使えばいいよね、ということだね。(完全に初見でいきなりscaffoldを試した時は、そこから何もできなかったなぁ。まだRailsが出始めのころ。)
  • Rails のルーティング - Railsガイド

    このガイドでは、開発者に向けてRailsのルーティング機能を解説します(訳注: routeとrootを区別するため、訳文ではrouteを基的に「ルーティング」と訳します)。 このガイドの内容: config/routes.rbのコードの読み方 独自のルーティング作成法 (リソースベースのルーティングが推奨されますが、matchメソッドによるルーティングも可能です) ルーティングのパラメータの宣言方法(コントローラのアクションに渡される) ルーティングヘルパーを使ってパスやURLを自動生成する方法 制限の作成やRackエンドポイントのマウントなどの高度な手法

    Rails のルーティング - Railsガイド
    shozzy
    shozzy 2019/09/23
    ルーティングについて
  • Rails5.2でdeviseを使う - 僕の日記

    $ rails g devise:install Running via Spring preloader in process 9646 create config/initializers/devise.rb create config/locales/devise.en.yml =============================================================================== Some setup you must do manually if you haven't yet: 1. Ensure you have defined default url options in your environments files. Here is an example of default_url_options appropri

    shozzy
    shozzy 2019/09/22
    始め方がきれいににまとまっている
  • activeadminでログインにDeviseではなくSorceryを利用する - パパエンジニアのアウトプット帳

    管理画面をサクッと作成できるactiveadminで、ユーザ認証にDeviseではなくSorceryを利用したのでその手順を紹介。 ※前提としてactiveadminは導入済みとします 1. sorceryをインストール Gemfileにsorceryを記述して、bundle install [Gemfile] ・・・ gem 'sorcery' ・・・ 2. sorceryの設定ファイルなどを生成 rails generate sorcery:installを実行 ※remember_meなどのsubmodulesも設定したい場合はドキュメントを参照。 ※初回のbundle installでpathオプションを指定した人はbundle exec rails generate sorcery:installですよ。念のため初心者の為に補足。 3. db:migrateを実行 手順2. でm

    activeadminでログインにDeviseではなくSorceryを利用する - パパエンジニアのアウトプット帳
  • データベースを使わないモデルを使ったRailsアプリの作成

    shozzy
    shozzy 2019/09/22
    DBを使わない画面の作り方
  • RailsでAPIを作成するために色々比較したので所感と実装方法のご紹介 - Qiita

    はじめに 外部サービスと連携したい!アプリ開発をしたい!際にAPIサーバを作成することがあるかと思います。 今回はrubyを使った色々なAPIの実装方法をご紹介したいと思います。 登場人物 今回は下記の所感、実装方法をご紹介していきます。 リクエスト取得部分 Rails Grape レスポンス部分 Rails RABL Jbuilder 前提 今回は全ての検証で下記のテーブル、URL、出力になるようになっています。 Userテーブルの構成 id name addr1 addr2

    RailsでAPIを作成するために色々比較したので所感と実装方法のご紹介 - Qiita
    shozzy
    shozzy 2019/09/22
    少し古いけど参考に。/routes.rbでルーティング設定して、controller書いて、、、という流れは普通の画面を作るときと同じ。
  • Rails Vue.js GraphQL実装中にCORSではまった | tanaken.me

    最近、個人開発でサーバとクライアントを分離したアプリケーションの実装をしています。構成は、RailsAPIサーバを実装し、クライアントのVue.jsからGraphQLを介してデータのやり取りをしています。静的ホスティングサイトから配信されたVueアプリから、RailsAPIサーバにアクセスする際に、同一オリジンポリシーとCORSの存在を知らずにはまってしまったので、振り返りを兼ねてまとめておきます。 前半部では、同一オリジンポリシーやCORSの概念についてまとめ、後半部では、その具体的な実装についてみていきます。 キーワード Rails API, Vue.js, Vue-apollo, GraphQL, CORS, 同一オリジンポリシー, クロスオリジン通信 対象者 サーバとクライアントを分離したアプリを開発中の方 オリジン(源泉) オリジン(源泉)とは、以下の規則に則ってURIをまと