rails_tips

file_fieldで画像をアップ

railsで、Resourceというmodelに画像を保存する様にしたんですが、 new_fileというメソッドでファイルから代入しようとできる様、 ちょっと変更する方法 alias :resource_old= :resource= define_method("resource=") do | value | if value.class == Action…

rails2.1以降のmigrationで VERSIONを指定する

rake db:migrate:up VERSION=20080806001340 にて対象のバージョンのアップを実行出来る rake db:migrate:down VERSION=20080806001340 で、ダウンの実行 ちょっと便利だ。

ruby on railsのActionControllerにモジュールでbefore_filterを実装する方法

dorubyに投稿しました。というわけで内容 railsのコントローラーにmoduleをinlcudeする時、 moduleにbefore_filterを書いても、AplicationControllerを 継承していないのでエラーが出ます。 moduleで共通化してるわけですから、before_filterもmodule側で 済…

selectタグの使い方

雑雑草々 controller @places = Place.find(:all) view p.nameがselectで表示される文字列で、p.idがvalueに入ります。 会社の同僚の人が悩んでたみたいなので書いてみる。 select(method, choices, options = {}, html_options = {} )なので choicesの中に…

ActiveRecordで遅く検索する(メタボプログラミング)

渡された複数のidで検索する必要がある時、 @users = User.find(params[:ids].split(/,/)) で検索しちゃ駄目だよ!早くなっちゃうからね! @users = [] params[:ids].split(/,/).each do |id| @users << User.find(id) end って検索しようね!idの数だけ検索…

Controllerでincludeされるモジュールでbefore_filterを実装する方法

railsのコントローラーで共通の処理を書こうとするとmodule化した所、 before_filterを定義しようとした時、AplicationControllerとか継承してないので エラーが出たので実装方法を確認。 という訳でやり方を晒す。 結論から言おうと、include時に呼び出され…

タイトルをlayoutで指定する。

2008-07-11 application.html.erbにheadのtitleを書くと、全ページ同じタイトルになってしまう。↑をコメントアウトして、各コントローラのviewに記述してみた。 私は、共通のレイアウトでタイトルを表示するところは <title> <%= @title || "共通のタイトル" %> </title> と…

zenpouの使っているrailsメソッド4つまとめ。

http://p0t.jp/archives/2008/07/rails-extrb.htmlというエントリがあったので 自分のブログに書いている、自分で使ってる便利メソッド系を纏めてみた。 rails_ext.rbに書いてるわけじゃないけど 入力画面も確認画面も同じrender :partial=>"form"を使えるヘ…

fixturesはcsvも取り込めるらしい。

テストデータの管理 test_helper.rb見てて知ったんだけど、fixtureってcsvでも良いって知ってた? 知らなかった……。

入力画面も確認画面も同じrender :partial=>"form"を使えるヘルパ

入力画面の後に確認画面が来る時、入力画面はとしておいて、 確認画面はってしていると思いますが、一々両方用意するの面倒だ。 更に次いでに言うと、DRYくさくない。 嫌だなー。というわけで作ってみました。 action名称がconfirmが含まれているという前提…

has_manyな子テーブルにデータを作成するbuildメソッド

先ほど新人から質問に来られて、buildの使い方で悩んでると聞かれたのですが、 「buildってあったっけ?newじゃね?」って状態でした。 そして色々と検証すると面白いメソッドだと分かったので紹介 class Parent < ActiveRecord::Base has_many :childs end …

便利なlink_to(link_to系メソッドとoptionの紹介)

railsのlink_toメソッドって便利ですが、最近教えてもらったメソッドに link_to_ifというメソッドが有る様です。 link_to_if(condition, name, options = {}, html_options = {}, *parameters_for_method_reference, &block) conditiongがtrueの場合、aタグ…

ActiveRecordで初期値を設定する様にする。

ちょっと必要なケースがあったので作ってみた。 class Sample < ActiveRecord::Base DEFAULT_DATAS={:name => "初期名前"} alias initialize_old initialize def initialize(attributes = nil) initialize_old(attributes) if @new_record && defined? DEFAU…

rhtmlでコメントアウトする方法

Rails的コメントアウト 〜 で挟め。と言うもの。 確かに、これだとHTMLを丸ごと囲める。

ActiveRecordで使えるテーブルのカラムタイプ一覧

表現 使われるclass integer Fixnum float Float decimal BigDecimal datetime Time date Date timestamp Time time Time text String string String binary String boolean Object 確認したのでメモ

acts_as_searchableをfind並みに使い倒す。

railsでhyperestraierを使うacts_as_searchableを最近弄ってるのでメモ。 インストールとかは省略。こちらが参考になるかも。*1 ドキュメントはここに関数の一覧がある。 そして、検索方法なんかはhyperestraierのユーザーガイド参照する。 複雑な条件式とか…

使えるvalidate一覧

dorubyに使えるvalidate一覧というエントリを投稿した。

Railsのアプリの重いところを突き止める。

本日、メッセンジャで問い合わせもらった時の内容をここに どこが重さの原因かこちらも把握できてないのでね…… って言う話があったんで提案。 railsのプロジェクトを配置しているフォルダには、色々フォルダがあって その中にlogフォルダがあるんですが、pro…

layoutを動的に変更する方法

layoutって普通にfilterと同じ様にメソッド指定させる事できたのね。 class ZenpouController < ApplicationController layout :set_layout def index end private def set_layout params[:layout] end end こんなん。 知らなかった。

mongrel_cluster_ctlでpidが残っててもスムーズに起動する

shutdownコマンドとかで停止した後、pidファイルが残っている場合、 mongrel_cluster_ctl start --cleanや mongrel_rails cluster::start --cleanでpidファイルを削除してスムーズに起動する。

ActiveRecordで最近知ったtipsとか

ActiveRecordのconditionsを綺麗に書くTips2つ(doruby)に書いてみた。 以前書いたActiveRecordでパラメータでconditions条件を追加しやすいヘルパ と、conditionsの最近知った書き方で2つ。

パラメータ保持リンク

helperに書いているパラメータ保持リンク def link_parameter(name, option) param_datas = {} params.each{ |key, value| param_datas[key.to_sym] = value } option.each{ |key, value| param_datas[key.to_sym] = value } link_to name, param_datas end …