はじめに―デフォルトの怖さについて Railsは文字通り「レールに乗る」ときに最大の効率を発揮するフレームワークです。CoC(Convention over Configuration)は今やRailsのみならず各所で用いられる概念となっています。これはもちろん圧倒的な量のxml設定ファイルに比べれば進歩ですが、一方で気になることもあります。それはデフォルト設定の重みがさらに増しているということです。 多くの人はソフトウェアをあまりカスタマイズせずに使います。ほとんどのソフトウェアは設定項目を最低数個、多いものでは数百個持っていますが、デフォルトでも「ある程度」動くものがほとんどなため、カスタマイズの必要を感じない人が多いのかもしれません(個人的にはgitやtmuxなどは設定を工夫するとかなり便利になるのにやっていない人が多い印象)。 さて、RailsはそのCoCを強調する姿勢ゆえになおさ
Ruby on Rails 8.0.1 Module ActiveRecord::NestedAttributes::ClassMethods activerecord/lib/active_record/nested_attributes.rb Active Record Nested Attributes Nested attributes allow you to save attributes on associated records through the parent. By default nested attribute updating is turned off and you can enable it using the accepts_nested_attributes_for class method. When you enable nested attri
Railsのmodelがとても長くなる場合や、数多くの関心事項(例えばvalidation、activation、association等々)に及ぶ場合には、concerned_withパターンを用いてひとつのmodelを関心事項ごとに複数のファイルに分割して書くことができます。 Teamboxというプロジェクト管理アプリのソースコードを読んでいました。app/modelsのディレクトリの中を見ていると、user.rbの他にuserというディレクトリがあり、その中にactivation.rbやvalidation.rbのようなコードがたくさん収められていました(githubのteamboxのmodelsディレクトリ以下を参照)。ためしに、app/models/user/validation.rbを読んでみると、class User ... validates_presence_of :lo
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s] config.i18n.default_locale = :ja config.i18n.available_locales = [:ja, :en] config.time_zone = 'Tokyo' ja: activerecord: errors: template: header: one: "%{model}にエラーが発生しました。" other: "%{model}に%{count}つのエラーが発生しました。" body: "次の項目を確認してください。" messages: taken: "はすでに存在します。" record_invalid: "バリデーションに失敗しました。 %{error
http://www.dhh-ping-pong.com/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約5時間前 「RailsでInteractorをうまく利用する」において、Grouperがブログで紹介したサンプルコードをDHHが批判して、「今回はサンプルコードが悪いだけだと言うなら、良いと思うサンプルコードを送ってほしい。」という発言をしていましたが、実際に原文では、 "Anyway, the invitation stands. Present any piece of real code and we can ping pong on it." 「ピンポンのようにやり取りする。」と表現しています。このコメントに呼応して、 http://www.dhh-ping-pong.com/ というサイトが立ち
What We Know Our key takeaways from partnering with enterprise-level engineering teams. Details How We Ensure Success Our unique and personalized approach to help you achieve your business goals. Details Your SEI Platform Get to know your custom-designed Software Engineering Intelligence (SEI) platform. Details
上記のような一画面に基本情報(宛先、住所)と複数の明細情報(物品名、数量)がある画面で入力された情報を親子関係にある基本テーブル(発送テーブル)と明細テーブル(物品テーブル)に同時に登録したい場合が業務アプリではけっこうあると思います。 Railsではこのようなケースに簡単に対応するための便利機能が用意されています。具体的にはモデルでaccepts_nested_attributes_forという設定を、ビューでfield_forメソッドを利用します。この機能を利用すると以下の2つメリットがあるので是非活用することをオススメします。 ソースコードが短くてすむ ⇒ 後述しますが、特にコントローラー側の記述量は激減します。 明細データへのバリデーション結果が画面にキレイに表示できる ⇒ 親子関係をRailsに認識させることで明細データのバリデーション結果を表示するロジックを個別に実装する必要が
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
2013年12月2日更新: 参照されることが多いので Rails 4 の情報を訳注として追記しました。また、Rails 4 に関する情報は、 WEB+DB PRESS Vol.73 が非常に参考になるので、一読をおすすめします。 この文章は Mitch Crowe 氏のブログより 2012年4月14日の記事を翻訳したものです。 The 10 Most Underused ActiveRecord::Relation Methods http://blog.mitchcrowe.com/blog/2012/04/14/10-most-underused-activerecord-relation-methods/ 昨日は ActiveRecord::Relation のコードに膝まで浸かって、使われているのをこれまで全然見たことがない面白いナゲットを思い出させてくれた。この記事で、十分に活用
モデルについて 説明 モデルとはアプリケーションが扱うデータや処理を表現する仕組みのこと モデル名とテーブル名の規約 英大文字から始まる 英数字のみ 単語の区切りでは、先頭文字を大文字 単数形の名詞 Entry UserComment ファイルはapp/modelsディレクトリに格納 ファイル名は、モデル名の単語区切りを「_」にし、すべて小文字にしたもの app/models/entry.rb app/models/user_comment.rb 命名規則 種類 説明 例
Life is beautifulのこのエントリーは「釣り」でしょ? no title 先日のエントリーでも少し触れたが、Ruby on Railsの最大の問題点は、それが持つ「一見そのフレームワークがMVCの形をとりながら、MVCの最も大切なところを外している『えせMVC』である」点にある。MVC(Model View Controller)がなぜ必要かを根底の部分でちゃんとと意識せずにRailsアプリケーションを作ると、後々ひどい目に会うので注意が必要である。 ということで、MVCの解説をされています。それは、OK。で、Railsが「えせMVC」だという理由。 ActiveRecordそのものはとても便利なもので全く問題はないのだが、問題はRailsの解説書などでActiveRecordを使って抽象化されたデータベースをModelと読んでいるケースが多く見受けられる点だ。 上に述べた通
RailsにはActiveRecordという素晴らしいORマッパーが付属していますが、 パフォーマンスの問題とか複雑な処理とかで やっぱり直接SQL実行したい…って場面多々ありますよね。 私SQL直接実行するコマンドって 「execute」しか知らなかったんです… で、executeで実行すると 結果が何か「Mysql2::Result」みたいなクラスのオブジェクトで返ってきて 使いづらいんです… (Mysqlの場合) $ ActiveRecord::Base.connection.execute("select * from users where age > 20")いちいちeachで値を取って整形したりして… 上記のようなselect文の結果なら、モデル経由で取ってくる時みたいに 配列とかで返してくれれば… とか思ってました。 そしたらやっぱりあった(゚д゚)! 〜参考になりました!
2013年08月12日11:25 Ruby RailsのStrong Parametersで弾かれたときにすぐに気付けるようにしてみる Rails4 を使ってると Strong Parameters で特定のパラメーターが弾かれていてハマることがあります。セキュリティ的に安全になったので素晴らしいんですが、いかんせん慣れていないせいか特定のパラメーターが弾かれていても気付かないことが多くて。。そこで、すぐに気付けるように色付けしてくれる colorize_unpermitted_parameters っていう gem を作ってみました。 使い方はこんな感じ。以下を Gemfile に追加して bundle install するだけ。 gem 'colorize_unpermitted_parameters' Strong Parameters で弾かれると Unpermitted para
インフラストラクチャー部の成田です。 先日開催された RubyKaigi 2013 で、 "High Performance Rails" というタイトルの発表をしてきました。 スライドと動画 発表の様子は ustream の録画をご覧ください。 [ustream id=33559705 hwaccel=1 version=3 width=480 height=302] スライドは以下にアップロードしてあります。 High Performance Rails (long edition) // Speaker Deck なお、発表時間の都合上、当日はここから 40 枚ほどのスライドを削除してしまいました。発表に使った短いバージョンのスライドはこちらです。 発表の概要 クックパッドは 2008 年から Ruby on Rails を採用し、ずっと使い続けてきました。サービスが成長するとともに
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く