タグ

ブックマーク / o.inchiki.jp (17)

  • Rils4で Russian Doll Caching を楽しむためのまとめ [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2014年01月11日(土) 作成日時: 2013年11月12日(火) 前の記事 / 次の記事 Rails4では従来の page cache や action cache は廃止され、 デフォルトのキャッシュ機構としては、Rails3までの fragment cache のようなものだけが使える。 Rails4のこのキャッシュ機構は今のところ RussianDollCaching、cache_digests、fragment cache 等と 呼ばれているみたいだけど指し示すものは全部同じもの。 というか最初別々の何かだと思ってて無駄に嵌まった。 Rails4で内部的に使われているgemが、 従来のRailsにおける fragment cache を進化させた cache_digests であり、 cache_digestsの仕組

  • Rspecで特定のテストだけを実行する [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2013年08月21日(水) 作成日時: 2013年08月21日(水) 前の記事 / 次の記事 参考 RSpecで特定のテストケースのみを実行する方法 [Ruby] 最近話題のRSpecのプレゼンの中で知らなかったこと 次のようなspecファイルがあった時、 $ vi $ spec/models/article_spec.rb 01 describe Article do 02 describe "#next", type: :reference, force: true do 03 it "次の記事を返す" 04 end 05 06 describe "#prev", type: :reference do 07 it "前の記事を返す" 08 end 09 10 describe "#as_read!", type: :des

  • Rails4でDeviseを使うメモ(StrongParameter) [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2013年08月01日(木) 作成日時: 2013年08月01日(木) 前の記事 / 次の記事 参考:plataformatec/devise Rails4でDeviseを使おうとするととりあえずStrongParameterで嵌まる。 例えばDevise用のモデルとしてUserモデルをつくって、 Deviseがデフォルト用意するカラム以外に独自のカラムを追加したい場合。 追加しようとする独自のカラムはStrongParameterで弾かれて使えない。 ので頑張って使えるようにするメモ。 っていうかplataformatec/deviseに書いてあることを日語にしただけ。 1.アプリケーション内にDevise用モデルが一つだけある場合 または、複数あるけどその全てに同じStrongParameterを適用しても差し支えない場合。

  • RailsでSTIしてPolymorphicするとバグるけど仕様 [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2014年03月16日(日) 作成日時: 2014年03月15日(土) 前の記事 / 次の記事 とりあえずメモ。 環境: Rails4.0.1 Polymorphic STI PolymorphicもSTIもいずれもモデルをDRYにする仕組みなんだけど、 この両方を組み合わせて使うとバグる。 自分にとって都合が悪いだけで そもそも敢えてそういう仕様なのかも知れないけど っていうかやっぱそういう仕様だった。 Polymorphic Associations 具体的には次のような現象が起こる。 class Catalog< ActiveRecord::Base belongs_to :resouce, polymorphic: true end class Book < ActiveRecord::Base end class Mag

    suginoy
    suginoy 2015/09/17
    これにハマった。。。
  • Railsモデルの中でヘルパーを使う [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2013年04月12日(金) 作成日時: 2013年04月12日(金) 前の記事 / 次の記事 app/helpers/ 配下にあるヘルパーを使う class Sample < ActivereRecord::Base include SampleHelper end デフォルトで用意されているヘルパーを使う class Sample < ActiveRecord::Base def link_to_root ActionController::Base.helpers.link_to("Home", "/") end end URLヘルパーを使う class Sample < ActiveRecord::Base def link_to_samples path = Rails.application.routes.url_he

  • Railsでradio_buttonのlabelを付ける [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2013年11月11日(月) 作成日時: 2013年11月11日(月) 前の記事 / 次の記事 Railsでraido_buttonにlabel付ける時どうすんの、 Railsだからどうせなんか頑張らなくていいやり方あるんでしょって思ったらやっぱりあったのでメモ。 参考:Rails3.1でradio_buttonにlabelをつける方法 value: でラベルを付ける対象を指定するのがポイント。 =f.radio_button :job_id, 1 =f.label :job_id, "勇者", value: 1 =f.radio_button :job_id, 2 =f.label :job_id, "戦士", value: 2 =f.radio_button :job_id, 3 =f.label :job_id, "僧侶",

  • Rails上の画像のパス [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2013年01月07日(月) 作成日時: 2013年01月07日(月) 前の記事 / 次の記事 Rails上で画像ファイルを扱う場合、Rails2時代と混ざって意味不明になりがちなのでメモ。 ・プリコンパイルの対象である画像: assets/images 配下に配置しているはず。 # / から始まらない画像ファイルのパスは apps/assets/images 以下を見に行く。 "background.jpg" -> apps/assets/images/background.jpg "persons/picture.jpg" -> apps/assets/images/persons/picture.jpg ・プリコンパイルの対象ではない画像: public/images/ 配下に配置しているはず。 # / から始まる画像ファイ

    suginoy
    suginoy 2014/08/27
    “/ から始まる画像ファイルのパスは public/ 以下を見に行く”
  • Railsのupdate_columnsとupdate_countersのまとめ [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2014年03月23日(日) 作成日時: 2014年03月23日(日) 前の記事 / 次の記事 カラムの更新 ActiveRecord::Persistence update_column, update_columns 特定の行の特定のカラムを更新する。 直接SQLが発行されバリデーションやコールバックは走らない。 更新日時だけを更新したい場合や、コールバックを走らせたくない場合に便利。 update_column 特定の行の1つのカラム だけ を更新する。 更新したいカラムと、更新後の値の2つの引数を渡す。 obj.update_column, :name, "PS4" update_columns 特定の行の複数のカラムを更新する。 更新したいカラムと更新後の値をペアにしたハッシュである引数を1つ渡す。 obj.update

  • Railsにおけるidの指定方法のメモ [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2014年03月30日(日) 作成日時: 2014年03月30日(日) 前の記事 / 次の記事 想像通りだし何の疑念の余地もないんだけど、 例えば、 user_path article.user と user_path article.user_id は違う。 前者はuserを取得するSQLが発行され、後者は発行されない。 idを指定する場合は該当のオブジェクトを渡すだけで 自動的にそのオブジェクトのidが指定されるっていうのはRailsの便利な機能だけど、 何でもかんでも省略してオブジェクトを渡していると無駄にSQLが発行されているかも知れない。

    suginoy
    suginoy 2014/04/02
    まじか。
  • RailsでFactoryGirlを使ってみるメモ [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2014年02月25日(火) 作成日時: 2013年08月06日(火) 前の記事 / 次の記事 Fixtureは充分にイケてると思っているので、基Fixtureで満足なんだけど、 Fixtureにできないことをするために、FactoryGirlを使ってみようと思い立ったメモ。 自分が知らないだけでFixtureできるのかも知れないけど、 DBに保存はしないけど値だけ欲しい時がある。 Rspecで言うと "valid_attributes" である値。 今までは自力で適当にモジュールつくって読み込んでたんだけど、 折角FactoryGirlってgemがあるんだから使ってみようかと思った。 ※ 適当にどんどん追加していったらかなり長くなってしまったので 暇が訪れたらまとめて新しい記事にしたいと思う(2014/02/25) 何年後にな

  • Railsのバリデーションでネストした配列に含まれる子モデルのエラーメッセージを個別に表示する [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2013年10月03日(木) 作成日時: 2013年10月03日(木) 前の記事 / 次の記事 accepts_nested_attributes_for を使って配列をネストさせた場合に 配列の要素ごとに個別にエラーメッセージを表示させるには、 親モデルの中で 配列用のカスタムバリデーション を定義して、 親モデルの has_many に validate: false を指定 する。 例えば次のようなモデルを定義して class User < ActiveRecord::Base has_many :items accepts_nested_attributes_for :items end バリデーションした場合、 @user.valid? items[0].name とitems[1].name にエラーがあってもそれは区

  • Railsでモデルの初期化処理を書きたい場合の注意 [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2014年03月05日(水) 作成日時: 2013年06月08日(土) 前の記事 / 次の記事 after_initialize, after_findフィルター はfind系メソッドの仕様上要注意なので、 find系メソッドは捨ててwhereメソッドを使おうという話。 あとコレクションの大きさを調べる時も注意。 目次 何が危険か 危険な例 危険を回避するには コレクションの大きさを調べる時も危ない 参考ページ 1.何が危険か after_initialize オブジェクトがインスタンス化された時に実行される after_find オブジェクトが検索されて発見された時に実行される で、この時のfind系メソッドの仕様が要注意で、 Railsのfind系メソッドは、そのオブジェクトが実際に使われるかどうかに関係なく、 検索してヒット

    suginoy
    suginoy 2014/03/05
    “Model.all 等で大きなコレクションを生成したタイミングで簡単に爆死出来る”
  • I18n.enforce_available_locales [俺の備忘録]

  • jQueryでajaxを投げるメモ [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2013年12月18日(水) 作成日時: 2013年06月09日(日) 前の記事 / 次の記事 参考ページ jQuery.ajax()のまとめ $.ajax中のcontextオプション $.ajax を使う。 # CoffeeScript $.ajax async: true type: "GET" url: "http://inchiki.jp" dataType: "text" context: this success: (data, status, xhr) -> alert status error: (xhr, status, error) -> alert status complete: (xhr, status) -> alert status async true => 非同期処理する false => 同期処

  • Railsのin?メソッド [俺の備忘録]

    suginoy
    suginoy 2013/12/03
    Rails 3レシピブックにもあったような。
  • Rails3 to Rails4の変更点、気付いたことまとめ [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2014年01月26日(日) 作成日時: 2013年08月01日(木) 前の記事 / 次の記事 Rails4にアップデートしてみた時に気付いたことなので、 Rails3の時から既にそうなっていたものもあるかも知れない。 で、その場合でもどの時点から変更されたのかは特に調べてないです。 積極的に変更点を調べたものではないのでアップデート過程で自分が遭遇 していない変更点については大きな変更点でもスルーしてる可能性があります。 また、StrongParameter、Turbolinks、RussianDollCachingについては この記事とは別にまとめました。 StrongParameter、Turbolinks、RussianDollCachingについて Rails4のStrong Parametersの使い方まとめ Rail

    suginoy
    suginoy 2013/11/09
    “ブロックを指定する場合、それは必ず最初のパラメーターでなければならない”
  • Railsでネストしたモデルをまとめて受け取って保存する [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2013年10月24日(木) 作成日時: 2013年02月06日(水) 前の記事 / 次の記事 Railsでモデルを保存する時に、 accepts_nested_attributes_for を使ってアソシエーション先のモデルも含めて一発で保存する。 目次 やりたいこと やること 付随する機能 参考ページ やりたいこと 例えば、次のようなモデルがあって、 class Book < ActiveRecord::Base attr_accessible :author_id, :title belongs_to :author end class Author < ActiveRecord::Base attr_accessible :name has_many :books end BookとAuthorを同時に保存したい時、こう書

    suginoy
    suginoy 2013/09/03
    「allow_destroy を有効にすることで、trueである"_destroy"パラメーターを渡した時に削除されるようになる」「eject_if で指定したメソッドが真の時、 そもそもネストされていなかったことになり...保存されない」
  • 1