2007-09-01から1ヶ月間の記事一覧

モデルのメソッドに関して

メソッドの内に書く変数として、属性値なら、name、関連先が絡んでいるなら、self.mailsと 明示したほうがいい気がする 同様の理由で、メソッド名事態も、関連なら@user.get_diariesとかにする方がいいかもしれない。 @user.diariesだと、直接関連しているよ…

has_manyとfind

■has_manyまたはhbtmに対しては、その属性自体もfindメソッドを持つ user.flags.find_all_by_flaggable_to_type("Diary") ※flagsというのはポリモフィックアソシエーション用に使っているそのユーザが仮想的なメールのやりとりをする場合、次のようなコード…

テストの直書き回避

ユニットテストでは、assert_equalとかのときに直書きをすることが多い。 何故なら、変数を利用した場合、両方ともnilで等価になったり、両方とも未変換で 等価になってしまったりしても分からないからである。 この問題を解決するなら次のような一文を入れ…

忙しい人と仕事のできる人の違い

■なかなか参考になる http://d.hatena.ne.jp/favre21/20070927

モデルの共通部分はどこに設置する?

http://wota.jp/ac/?date=20070902

綺麗なコードを書くために

■実践していこう! http://shugo.net/ruby-codeconv/codeconv.html

エラーレポート(if a = *** && b = ***)

ではまった。 日記のコメントの修正時に、「修正」を押すと、jp_mobileでフィルタエラー 対応策:mobile_fiterを解除したら、なぜか@userに日記のインスタンスが入っていた。 return unless (@user = get_diary_owner && @diary = get_diary)ここが悪かった…

開発手順について

■ビュー作成→モデル作成→テスト→実装。どういう手順がいいのかなぁ これについて色々試しているが、次のはよくないモデル作成→ユニットテスト→コントローラ作成→機能テスト→コーディング →ビュー作成→手動テスト これだと、ビュー創っているときに、テストで…

目指せハッカー!

■今回はるびま創刊号と、もう一つ別のサイトから抜粋 まつもと プログラミングはほんとに面白いんで、いろいろやってみてください。でも、先達の知恵は、 見たほうがいいかもしれないな。ささだ ははぁ、なるほどね。もっとソース読め、と。まつもと 若い人…

更新と確認画面

■今回は、edit操作に対して確認画面をつけることを考える これを参考にするとよい http://www.fdiary.net/ml/rails/msg/290しかし、generatorが最新のrubyでは正しく動作しない場合がある。generate.rbを編集する。 このscaffoldの確認画面の実現方法は、con…

SVNを皆で使おう

この場合、1人がコミットした場合、次にコミットすると上書きされてしまうのでは、 な〜んてことを思ったりする。 もちろん、SVNはそんなに貧弱ではない。自分でない人が更新しているのを見つけ、 それが自分のローカルでチェックアウトしたものと違えば、「…

テストに関して(所属モデルの更新)

■自分が持っている他のモデルを更新するには、自分をreloadすればよい post :update, :id => @user.diaries.first.id,:diary => parameters assert_equal @valid_data.title, user.reload.diaries.first.title

Hiddenに関する注意

http://www.techmatrix.co.jp/products/security/watchfire/w_attackofappli/attack2_hidden.html

文字コード設定

■これをすると、utf8を扱う際にdefault character setを指定する必要がなくなったり、 Railsのdatabase.ymlで文字コード設定をする必要がなくなる http://wota.jp/ac/?date=20061011

続・フォームと確認ページ

■http://d.hatena.ne.jp/LukeSilvia/20070921/1190418225の続編前の日記では、確認ページを作成するのにセッションを使った。 しかし、ずっと簡単かつ堅実な方法があった。 それは、HIDDENを使うというものである。 作戦としては、確認ページから「修正」や…

美しいプログラムとは

るびまより、まつもと氏曰く、「効率がいいプログラム」。 これは、実行効率ではなく、作成、保守、読む時などに効率がいいプログラムということ。 それは、シンプルであり、柔軟性があるものである。

DBデザインについて

DBデザインもおくが深い。ただ同じ属性をまとめればいいというわけではない。 やはり、そのテーブルが持つべきカラムなのか、概念的矛盾はないか等をきちんと チェックすべし。それが、最終的に保守性を上げる。DBという全体への影響が大きい部分 だからこそ…

フォームの確認ページとvalidates_length_of

■フォーム入力した後の確認ページを作成する方法を考える 色々方法はあるが、今回はセッションを使う方法を考える。 もっといい方法はこちら 作戦はこうだ。 ・フォームからパラメータを受ける ・検証を行なう ・セッションに値を入れる ・確認ページを表示…

携帯HTML

■背景色を設定したい <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>携帯 xhtml テスト</title> <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS" /> </head> <body> </body></html>

ポリモフィックアソシエーション

1つのオブジェクトを複数のオブジェクトと関連付けることが出来る。 例えば、SNSなどである、コメントや足あと。どちらも、「あるユーザーが何に対して」コメントする、 足あとをつけるという構造になっている。ここを抽象化したいと考えた。よって「誰が何…

DRYなメソッド達

□メソッドのやることは基本的には1つ。このくらい細かくていい def price nil end def end? period_to.nil? ? false : period_to < Date.today end def for_only_pc? useragents.size == 1 && useragents.first.name == 'PC' end def self.order 0 end

デザインについて

最初はスケーラビィリティとか考えないで、とかく綺麗に作るべき 継承とかMix-inとか使えるなら使う。

メソッドのまとめ方にも注意

まとめまくると、エラーメッセージが出せなくなる。 やっていることは1つでも、それを組み合わせているメソッドがあって、 それを呼んだとき、読んだ側ではどの種類のエラーが起こったか 分からないときがある。まぁ、メッセージを返して、if **.class == Us…

user_id => @userとすれば、@user.idと同じになる

userがnew_recのときは、nilになってくれる。nil.idエラーにならないから便利

テストでのセッション管理

□テストヘルパーにこれをおくと便利 def create_session @request.session[:company] = Company.authenticate("fukushige", "ruby") end

レイアウト。情報を上に上げていく

ある画面だけ、テーマ色を変えないといけないとき 一番下 @color = "new_color" それをレンダリングしているテンプレート @color = (@color || base_color) それをレンダリングしている全体のテンプレート @colorを色指定に使う。 <% @title = "ユーザー情報…

テストに関して

assert_redirected_to は、テンプレートの有る無しを見ない

テストで日本語

C:\ruby\lib\ruby\gems\1.8\gems\rake-0.7.2\lib\rake\rake_test_loader.rbに書けばOK #!/usr/local/bin/ruby -Ku environment.rbに$KCODE指定をした場合は、これを書かないと、日本語のせいでテストで 落ちることがある。

継承

定数も上で初期値を定義 MAIL_DOMAIN = nil

DRYすると、凄く綺麗に書けるぞ!

分割できるものは分割。それを組み合わせればOK。 1つ1つが小さいから、信用性が高い。信用できるものを組み合わせれば信用 できるものができる