Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
もくじ もくじ migrationのときにstring型のidを使いたいとき テーブル名を単数形にしたい場合 マイグレーション ActiveRecord migrationのときにstring型のidを使いたいとき Ruby on Rails で rails generate migration <マイグレーションクラス名> ってしたあとにファイルにテーブル定義を書いていく事を考えます。このとき、デフォルトのままだとint型でauto incrementかつprimary keyなidという属性が勝手に追加されますが、必ずしもそのようなidを使いたくない場合もあるでしょう。例えば、string型のidを使いたい場合の定義はこうです。 とりあえずマイグレーションクラスを生成します。 rails generate migration CreateChampion マイグレーションクラス名は何で
はじめに:Arelって何? みなさん、Arel(アレル)ってご存知ですか? ArelはActive Recordの内部で使用されるSQL生成ライブラリです。 Railsのクエリの書き方をググると、ときどきArelを使った実装例が見つかるので、見たことがある、もしくは何度か使ったことがある、という人もいると思います。 Arelをよく知らない人のために、Arelの利用例をちょっと見てみましょう。 たとえば「コメント文中に、"ruby"が含まれるユーザープロフィールを検索したい」という場合、Rails標準のクエリインターフェースを使うと条件部分のSQLを文字列で書く必要があります。(PostgreSQL環境を想定) ご覧のとおり、Arelを使うと文字列でSQLを書くことなく、Rubyのコードとしてクエリを書くことができます。 なので、Arelは「SQLを書かなくて済む!」とか「Rubyのコードと
ActiveRecordを使っていてunionしたいパターンができたので、やってみようと思ったら、思いの外ハマってしまったので情報共有したいと思います。 ActiveRecordにunionというメソッドがあることを知った私は、これでできるんじゃないの?と思って意気揚々と使ったのですが、なぜかエラーがおきました。 union = MyGroup.where(user_id: user).reorder(nil).union( MyGroup.limited.where(user_id: user.members).reorder(nil) ) MyGroup.from(MyGroup.arel_table.create_table_alias(union, :my_groups).to_sql)
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 前回に引き続き、またまたDBネタです(^o^) 前回:Railsエンジニアなら最低限これだけは知っておきたいSQLのJOINの動き 今回は、インデックスについてです。インデックスにはいくつか種類がありますが、 RDBで一般的に使われるB-treeインデックスについて書いていきます。 いきなりですが、インデックスは深い!かなり深い!バイカル湖くらい深いです。 ある程度の指針的なものはありますが、インデックスをどう設計するかの見極めは状況によって変わってくるようです。クエリの実行頻度、テーブルサイズ、カーディナリティ(カラム内のデ
はじめに 先日、アソシエーション関係がある2つのテーブルから、N+1問題を考慮しつつ、特定条件でデータを抽出して表示したいことがありました。 しかし、ActiveRecordの検索メソッド(includes、joins、eager_load、references等)も結構色々あって、 「どれを使えばいいんじゃーー!!」と噴火寸前になりましたので、復習と備忘録を兼ねて整理してみます。 言及しないこと 今回はシンプルに動きだけを確認することを目的としていますので、細かなところは記載しません。 本記事の最後に参考リンクを記載しますので、他の方の記事を参考にしてもらえばと思います。(´ε` ) 環境 ruby ruby 2.3.1p112 (2016-04-26 revision 54768) activerecord (5.0.1) sqlite3 (1.3.13) 前提条件 モデル(テーブル)
今回はSinatra(シナトラ)についてです. シナトラと言っても,フランク・シナトラではありません.(歳がばれますね) 普段, 何気にRailsを使用しています. 自分で書くコード量も少なく,ほとんどフレームワークがやってくれますが,ちょっとしたWebサイトを作成するだけでも,Gemやらファイルやらで,かなりのビッグサイズになってしまいます. そんな,Railsのような巨大なフレームワークを使う程でもない,データベースの保守などのちょっとしたサイトを構築したい,でも,PHPではなく,あくまでもRubyで,しかもActiveRecordのようなデータベースマッパーや,ERBのようなテンプレートを利用したい,というような場合に最適なWebフレームワークが... Sinatraです. 今回は,このSinatraのフレームワークを使って,SQLiteデータベースのテーブルのレコードの表示,登録,
Rails ActiveRecordで複数のカラムに対して一意制約を設ける。複合一意制約 複数のカラムの組み合わせがユニークであってほしい場面に遭遇しました。 例えば、Siteテーブル Keywordテーブルが存在する時、 Keywordテーブルにある site_id と name そして date の組み合わせはユニークでなければいけない状況でした。 site_id, name, date の組み合わせがユニーク この組み合わせのユニークを担保するために、Railsアプリケーション側でユニークであることを確認するvalidate処理を設けて解決させました。 class Keyword < ActiveRecord::Base validates :site_id, uniquness: { scope: [:name, :date] } end 上記の様に書くことで、データのinsert
背景 railsではrails g scaffoldなどでModelを作成すれば、 自動的にidが付与されます。 しかもprimary_keyでauto_incrementでかつindexも張られるので、 普段はidを気にする必要はありません。 railsを使い、自分でデータ構造を決める場合はrailsの流儀に則った方が楽で、問題も起こりません。 しかし、古いデータを活用した場合、流儀にそぐわない事もあり得ます。 今回は規約に沿わない場合の対応について大きく分けて2つの場合について説明します。 なお環境は以下の物で検証しています。 ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0] Rails 4.0.0 composite_primary_keys (6.0.0) 主キーがidではない 主キーがidではない場合
railsを既存アプリケーションのDBにつないで開発 PHPアプリケーションをrailsに一部のせかえる事にしました。 エゴです。えぇ、、、完全なエゴです。効率を考えると全くエゴではないかもしれません。それでもエゴです。 require ruby 2.0rails 4.0rails project作る$ gem install rails $ rails new hoge -T --skip-bundle その他最初にやる作業等(rails template作らないとなぁ、、、)をごにょごにょとします。 dbつくってつなぐまず、DBにつなぎます Gemfile gem 'mysql2' database.ymlをよしなに設定 development: adapter: mysql2 encoding: utf8 database: my_db_name username: root pas
環境 osx10.9.1 ruby2.0.0 rails4 MySQL5.6.x 経緯 既にMySQL上に存在するtableを使ってrailsしてみた。 MySQLと接続する 下のサイトを参考にして、database.yamlを定義。 - development: adapter: mysql2 encoding: utf8 database: my_db_name username: root password: root host: localhost pool: 5 timeout: 5000 参考サイト http://threetreeslight.com/post/61834000065/rails-db MySQL上のテーブルからscheme.rbを生成する。 rake environment -v -t RAILS_ENV=development db:schema:dump
間違えて migrate したファイルを修正し、rake db:migrate を実行する。 [markdown] > * [Rake – Railsドキュメント](http://railsdoc.com/rake) ## 手順 ### rake db:version 現在の状況を確認します。 “`prettyprinted % rake db:version Current version: 20131002104226 % ls db/migrate 20130927063810_create_users.rb 20130927093118_create_tasks.rb 20130928114148_add_password_to_users.rb 20130929025154_add_adm_to_users.rb 20131002103504_create_tags.rb 201
オブジェクトがDBに保存される前に、そのデータが正しいかどうかを検証する仕組みをバリデーションといいますが、 RailsでActiveRecordを使ってそれを実現するにあたってよく使いそうなのをまとめます。 以下のメソッドにおいてはバリデーションがトリガされます。 create create! save save! update update! 以下のメソッドにおいてはバリデーションはスキップされます。 decrement! decrement_counter increment! increment_counter toggle! touch update_all update_attribute update_column update_columns update_counters Railsでのバリデーショントリガ Railsではvalid?メソッドを実行するとバリデーションが実
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く