woshidan's blog

あいとゆうきとITと、とっておきの話。

Rails

RailsのFormクラスについて

Railsでバリデーションを書くケースといえばビジネスロジックで場所はModel(ActiveRecord)が多いのではないかと思います。 これは、たとえばRails Tutorialで扱うような、フォームで扱うModelが一つかつ単純な場合には特に迷う必要はありません。Railsのフォ…

RailsのModelのvalidatesメソッドを見て単純なバリデーションテストを生成するgemを書きました

github.com 表題の通り、RailsのModelのvalidatesメソッドを見て単純なバリデーションテストを生成するgemを書きました。 書いた理由 RailsのModelの基本的なバリデーションのテストは時々、Rails Tutorialやドキュメントのコピペと何が違うのだろう、これは…

OmniAuth(omniauth-twitter)での認証が401 Authorization Required invalid_credentialsで失敗する

OmniAuth系のライブラリでTwitterやFacebookなどのサービスと連携しようとしたところ、401 Authorization Required invalid_credentialsでひたすら失敗してつらかったです。 特にTwitterのAPIには、401でないエラーを401で返すという話もあり*1、結局関連す…

バージョン指定をしない時、Railsのrake db:migrateでchangeメソッドを実行するMigrationのインスタンスの配列をどうやって取得しているのか

migrationで厄介な対応が必要な場合、SchemaMigrationをいじって整合性を取る必要性がある、と先輩が言っていたのを聞いて、ふむふむと追いかけてみました。 なお、この記事に出てくるコードのRailsのバージョンは、5.0.0.alphaです。 まとめ バージョン指定…

ActiveRecord::Baseのcreateとsaveの違い

たまたま仕事で気になったので、ActiveRecord::Baseのcreateとsaveの違いについて簡単に調べました。 まとめ save(!)メソッドはcreate(!)メソッドで利用されている create(!)メソッドはnewメソッドとsave(!)メソッドを行うメソッド save(!)メソッドを利用し…

論理削除カジュアルに触発されて現場で見たデータベースについて考えた事を書いてみた

論理削除カジュアルに触発されたので、社会人になってここ半年くらい、現場で見たデータベースについて考えた事について書いてみます。 内容 とりあえず外部キーにはインデックスを貼っておく ユニーク制約はデータベースレベルでやらないとしばしば崩れる …

Railsのコントローラのアクション間でデータの状態の管理がよく分からないとき

こちらの記事*1の続きです。 なんか、いわゆるfat controllerの具体的事例集、みたいなかんじになってしまって途中で書く気が失せてきたのですが、ふと思い出して自分の公開鍵のメモをいま見直したら予想以上に良かったので、一応残しときます。 内容 アクシ…

Railsのコントローラのアクションがやたらと横に長くて読みにくいときに確認したいこと

こちらの記事*1の続きです。 長くなったので、アクションのコードがやたらと横に長いとき、について書きます。 残りは、パラメータの受け渡され方がよくわからないとき だー。 内容 アクションのコードがやたらと横に長いとき 条件分岐がひたすらネストして…

Railsのコントローラのアクションがやたらと縦に長くて読みにくいときに確認したいこと

今週はなんだか見た目はそんなでもなかったのにやたらと読みにくいコントローラのアクションに振り回されていました。 せっかくなので、今回の事だけではないんですが、これまでに思った事をまとめておこうと思います。 長くなったので、アクションのコード…

urlヘルパを使ってプロトコルがhttpsのurlを吐き出させたい

なんか調べてたら、Railsのurlヘルパーでhttpsの指定ができる、という話を見かけて、よく分からなかったので調べてみました。 前もって把握していた情報は *_urlヘルパは、完全URIを返す *_pathヘルパは、パス以下を返す だったので、これじゃなんともいえな…