0からレコード数未満の整数をランダムに作り、それで適当にオフセットする。 シンプルで特定のDBにも依存してないので良さそう。同じ考え方でほかのORMでも通用するはず。 RDBの関数を呼ぶ方法もあるけど、それだとデータベースに依存しちゃうのでいまいちです。 (SQLITE は RANDOM() 、MySQL は RAND() という関数はあるが、関数名が異なる) 全件取って、ランダムに一件取り出す、のはダサいしパフォーマンスも悪そう。
![ActiveRecord でランダムなレコードが(1件または複数件)欲しい | NizLog](https://cdn-ak-scissors.b.st-hatena.com/image/square/1970c313182334978052d782f53fdf559b3c67e7/height=288;version=1;width=512/https%3A%2F%2Fblog.44uk.net%2Fwp-content%2Fuploads%2F2012%2F12%2F51hCV4olz-L._SL200_.jpg)
RailsにはActiveRecordという素晴らしいORマッパーが付属していますが、 パフォーマンスの問題とか複雑な処理とかで やっぱり直接SQL実行したい…って場面多々ありますよね。 私SQL直接実行するコマンドって 「execute」しか知らなかったんです… で、executeで実行すると 結果が何か「Mysql2::Result」みたいなクラスのオブジェクトで返ってきて 使いづらいんです… (Mysqlの場合) $ ActiveRecord::Base.connection.execute("select * from users where age > 20")いちいちeachで値を取って整形したりして… 上記のようなselect文の結果なら、モデル経由で取ってくる時みたいに 配列とかで返してくれれば… とか思ってました。 そしたらやっぱりあった(゚д゚)! 〜参考になりました!
Migrationとは Migration とは、Railsで使うデータベースの管理機能で、テーブル作成・カラ ムの追加/変更などの作業を一元管理できます。SQL でスキーマを書くのでは なく、Rails独自の記法(Rubyの文法の範囲内)を使ってDB管理を行います。以 下のようなメリットがあります。 スキーマのバージョン管理ができる rake コマンドでスキーマのバージョンアップ/ロールバックが可能 データベースに依存しない書き方ができるので、他のデータベースに切り替えるのが容易 対応しているデータベース 現在、対応しているデータベースは MySQL, PostgreSQL, SQLite, SQL Server, Oracle です。 今後、対応DBは増えていくと思います。最新情報は、 http://api.rubyonrails.org/classes/ActiveRecord/Mi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く