タグ

ActiveRecordとRubyに関するfjwr38のブックマーク (6)

  • (Ruby) Module の include で クラスメソッドを追加する方法 - tashenの日記

    Rails や添付ライブラリ等で利用されているテクニック。 何かのクラスにある性質を追加したい場合、モジュールの include を行うわけです(代表例:include Enumberable)。 素直にモジュール定義をして、クラス定義側で include するだけだと、インスタンスメソッド等はクラス側に追加されますが、include したクラスのクラスメソッドを追加することはできません。 でもこれでは足りなくて、クラスメソッドを拡張したい場合があります。これは Ruby のメタプログラミング機能を利用して可能です。 実際に、ActiveRecordの基礎クラスである ActiveRecord::Base には最低限のクラスメソッド、インスタンスメソッドしか定義されていません。バリデーションに利用されている validates_length_of 等のクラスメソッドは ActiveReco

    (Ruby) Module の include で クラスメソッドを追加する方法 - tashenの日記
  • Sinatra+ActiveRecord+MySQLで、簡単APIサーバ構築 - Qiita

    サーバを使ったiPhoneアプリを作りたかったので、簡単にサーバ側作れないか調べてみました。結論として結構簡単に出来る事が分かったのでメモメモ。 参考にした記事 Sinatra+ActiveRecord+SQLite3で,軽量なWeb-DB連携例 | tamo's blog 大分参考にさせて頂きました。ありがとうございます! 仕事ではMySQLを使う事が多いので、SQLite3ではなくMySQLを使う事にしました。 手順 Ruby,MySQLをインストール データベースを作成 Gemfileを作成とインストール database.ymlを作成 Rubyファイルを作成 実行 動作確認 1. Ruby,MySQLをインストール 結構な量になったので別記事にまとめました。ここが一番面倒(´Д`) - Ruby,MySQLの環境を構築する(Mac版) #MySQL #Mac #Ruby #home

    Sinatra+ActiveRecord+MySQLで、簡単APIサーバ構築 - Qiita
  • ActiveModel::Dirtyのメソッドを使って変更を感知しよう - Qiita

    ActiveRecordを使っていると時々プログラム内でModelオブジェクトの値を変更してから、変更前の値が欲しくなったりすることがある。 そんなときはActiveModel::Dirtyのメソッドを使うとModelのオブジェクトに変更があった時に変更の情報を取得出来る。 # たとえばUserのレコードを一個引っ張ってきて u = User.last => #<User id: 5, age: 19, name: "Kiriko Takemura"> # 変更されていないことが確認出来る u.changes => {} u.changed => [] u.changed? => false # 名前を変更してみる u.name = "Caroline Charonplop Kyary Pamyu Pamyu" # するとchangesが変更されたプロパティの変更前と変更後のデータが取得で

    ActiveModel::Dirtyのメソッドを使って変更を感知しよう - Qiita
  • てめえらのRailsはオブジェクト指向じゃねえ!まずはCallbackクラス、Validatorクラスを活用しろ! - Qiita

    てめえらのRailsはオブジェクト指向じゃねえ!まずはCallbackクラス、Validatorクラスを活用しろ!RubyRails ちょっと煽り気味のタイトルにしてみましたが、Railsで開発する時は意識的にOOPに寄せないとオブジェクトの力が活かせなくなるよってことと、Railsが提供しているクラスの責務を分割することを支援してくれる機能について話をします。 ActiveRecordの性質 Rails開発においては、モデル層にロジックを書いてコントローラーは薄くしろ、というのはしつこく言われているので、概ね浸透してきていると思います。 それに加えて、最近私が結構しつこく主張しておきたいのが、モデル = ActiveRecordでは無いよ、ということです。 ActiveRecordは成り立ちから言うと、ロジックとDBへの永続化をまとめてカプセル化するアーキテクチャパターンから来ています。

    てめえらのRailsはオブジェクト指向じゃねえ!まずはCallbackクラス、Validatorクラスを活用しろ! - Qiita
  • Rails等でURLにランダムな文字列を使いたい時のアレ - Qiita

    http://example.com/samples/lk23Affa みたいなURLにランダムな文字列を使いたい時ありますよね。 上記がRailsのActiveResourceのRESTfulっぽいルーティングだとしたら、 samplesというresourceのid=lk23Affaにアクセスしてることになりますね。 ActiveRecordだと普通にテーブルを作成していったら、 主キーのidは、auto_incrementのただの数字連番になってしまいます。 また、文字列の主キーを設定するのが結構面倒なので *1、 access_tokenというようなカラムで別に値を保持しておくのがよさそうです。 class CreateSamples < ActiveRecord::Migration def change create_table :samples do |t| t.string

    Rails等でURLにランダムな文字列を使いたい時のアレ - Qiita
  • Rails3のfind系メソッドと注意のまとめ|TechRacho by BPS株式会社

    Rails3では,ActiveRecordを使ったデータの取得方法にfind, find_by_XXX, find_all_by_XXX, all, whereでの絞り込みなど色々ありますが,それぞれ微妙に異なった挙動をします. ちょろいサンプルアプリを書く位ならあまり気にならない所なのですが,きちんとアプリを書く上では以外と大事なところ(後述)なので,ここいらでまとめておきます. Rails使っている人で hoge = Hoge.find(params[:id]) || Hoge.new とか書いて思った様に動かないぞ?とかハマった人向けです. 取り上げるのはfind, find_by_XXX, all, find_all_by_XXX, whereです.Railsのバージョンは3.2.8を使っています. 以下の説明では,以下のクラスが存在することを前提とします. class Hoge

    Rails3のfind系メソッドと注意のまとめ|TechRacho by BPS株式会社
  • 1