What is it, naokirin?

Rails のモデルを整理しよう

Rails では様々な機能を使って、共通化や抽象化、シンプルなコードへの書き換えなどを行えるようになっています。今回はモデルに焦点を絞り、それらをまとめていきたいと思います。また、整理を始める前に気をつけるべきことをまとめておこうと思います。 Ra…

Rails migrationで使うデータ型を考える

ざっくり migration で指定するデータ型について書いておきます。 型の種類 文字列の扱い 小数の扱い ID パスワードの保存 まとめ 型の種類 Rails の Migration で指定できるデータ型としては一般的に以下があります。(今回の説明のため primary_key は除い…

kaminari に入門して、ページネーションしよう

github.com kaminari といえば、Rails などでページネーションするための gem です。 今回は Rails に導入してみて、ページネーションしてみることにします。 今回は Rails 5.2, kaminari 1.1.1 で行っています。 kaminari をインストールする 確認用に User…

Ruby on Rails の has_secure_password のコードを読んでみる

最近は個人アプリ開発だと OpenID Connect などで済ませてしまうかもしれませんが、Ruby on Railsで直接パスワードを記録する際にデフォルトで利用できる has_secure_password メソッドの実装を読んでみました。 読んだのは Rails v5.2.3 になります。 has_s…

ActiveModel::Model で DBに依存しないモデルを作ろう

もう使い古されたネタという感じですが、Railsを使わずとも ActiveSupport だけを利用してRubyのコードを書くことは結構多いのではないでしょうか。 blank? , present? であったり、 pluralize や try 、 1.year.ago のような呼び出しなど、ヘルパーメソッド…

Ruby合宿 2011に参加してきました!

(今回は本のような形で書いていきます。理由?そうした方が楽しそうだから。) まえがき 参加してきましたよ。「Ruby?スクリプト言語?RubyってRuby on Railsでよく使う言語でしょ?Webアプリケーション作る気ないし、今はやらないかなー」という発言をした…

RubyのModule#define_methodとObject#sendを使ってみる

class Foo def self.createMethod name define_method name do puts name.to_s end end def self.createMethod2 name define_method name do |text| puts name.to_s + text end end createMethod :yes createMethod :no createMethod2 :this end foo = Foo.n…

Rubyのdup、cloneの動作の差異

RubyのObjectクラスに定義されている、dupとcloneという二つのオブジェクトのコピー用のメソッドの動作について確認してみます。バージョンはRuby1.9.2です。 a = Object.new a.freeze # freeze a1 = a.clone a2 = a.dup puts a1.frozen? puts a2.frozen? b …

RubyのMixinをちょっとかじってみた

RubyのMixinがどんな感じかな、ということで試してみた。 # モジュールの定義 module Mod def normal str return "#{self.func str}" end def exclamation str return "#{self.func str}!" end def period str return "#{self.func str}." end end class Foo…