概要 コレクションを扱うクラスに Enumerable モジュールを include することはままあります。each メソッドをオーバライドするだけで、 Enumerable#each_with_index, Enumerable#map, Enumerable#inject といった便利な定番メソッドが使えるようになるので便利です。そのため、僕自身もよく Enumerable モジュールを使っていました。 以下の GroupedCharacters クラスは Enumerable モジュールを include する例です。 # アニメキャラクターを作品ごとにグルーピングするためのクラス class GroupedCharacters include Enumerable attr_reader :characters def initialize(*characters) @chara
従業員データベース機能の開発を担当している渡邉です。最近公開したGemであるactiverecord-tenant-level-securityの紹介をします。 SmartHRにおけるマルチテナントの現在 私たちが開発するSmartHRはお客様ごとに1つの環境を提供する、マルチテナント型SaaSです。サービス全体で1つのデータベースを持ち、複数のテナントのデータが混ざらないように、SQLで問い合わせを行います。 1つの環境ごとに1つのデータベースを持つ方式は安全性の面で優れていますが、スキーマの保守やマイグレーションにかかる時間の増加など、多くの技術的な困難をもたらします。この選択の背景については、2018年に書かれた以下の記事もご覧ください。 tech.smarthr.jp とはいえ、常にテナントごとのWHERE句を意識しながらコードを書くのは大変ですし、不具合の温床になります。幸い、私
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く