2006-02-03 (金) [長年日記] Edit
1
find_by_sqlを行うクラスの選択
たとえば、
member = Member.find_by_sql("SELECT * FROM 関連するテーブル群 LIMIT 1")
とすると、関連するテーブル群のカラムが全て member オブジェクトに入る。
すると、
member.memberからほど遠いテーブルのカラム名
という感じでデータを呼び出すことができるのだが、なんか、えー、って感じ。
いっそのこと、ActiveRecord::Baseクラスに呼び出しさせる?(えー)
または、ビュー作って、ビューに対応するモデルを作るとか?(えー)
2 北海道は節分に落花生を投げるんだってね。
さっき初めて聞いた。
2006-02-07 (火) [長年日記] Edit
1
ユーザーによってlayoutを変更する
AWDwRに載ってたのでパク(ry
LAYOUTS AND COMPONENTS p.358 より
class StoreController < ApplicationController
layout :determine_layout
# ...
private
def determine_layout
if Store.is_closed?
"store_down"
else
"standard"
end
end
end
2
Inflector.underscore
これで、そんなディレクトリは見つかりません、とか言われません。泣くほど便利。
3
削除フラグとか
【Agile】Ruby on rails相談所【DRY】 339さん
View を作る(DBが対応していれば)
class Book < ActiveRecord::Base # 管理用? class ActiveBook < ActiveRecord::Base # 通常用
Caboose::Acts::Paranoid
class Widget < ActiveRecord::Base acts_as_paranoid end Widget.find(:all) # SELECT * FROM widgets WHERE widgets.deleted_at IS NULL
※eager loading には対応してないっぽい。むぅ。
4 ユースケースの本
ユースケースだけなら前者。ユースケースのライフサイクルの表は必見。 ユースケースを含めた要求うんぬんだったら後者。問題解決のステップから始まっている。 コーバーンの本よりも後発なだけに、どちらもよくまとまっているように思った。後者はなんかいろいろ網羅してあってお徳。どっちか1冊買うとすると、断然、後者。邦訳はどうなんでしょうかね。
あと、この2冊は図とか内容とかがカブってるっぽいんだけど、なんなんだろかね。
2006-02-10 (金) [長年日記] Edit
1 参照整合性制約は……つけたい派
なにはなくともER図が欲しい派なんですが、自分では作りたくない派なので、できればリバースしたいのデスよ。なので、ホントは、きちんと参照整合性制約は付けたい派。 以前(かなり前)、前田さんが外部キー使うとおっしゃっていて、勇気付けられたものでした(気が変わっていたらどうしよう)。
ちなみに、ARでCASCADE DELETEは :dependent オプションっぽい。でもなあー、DBとARのどちらかに制約を入れるとしたら、ARではなくDBに入れたいなーと思ったり。
class Order < ActiveRecord::Base has_many :line_items, :dependent => :delete_all end
2 「3年で陳腐化するWebサイトの構築には軽量言語のほうが向いている」,日本Rubyの会,高橋征義会長:IT Pro
と、こういう記事を紹介しつつ、こんな会社で一緒に働きませんか、とか真似して言ってみる。
現在はネットワークエンジニアを募集中(だそう)です。詳しくは以下をご覧下さい。
資格の欄に「25〜35歳くらいまでのWeb業界2年以上の方」と書いてありますけど、必ずしもそういうわけでもないみたいです。現に私もWeb業界にいたことはありませんでしたし。
2006-02-11 (土) [長年日記] Edit
1
G(グラビア)ザテレビジョン vol.1 (1) 月刊ザテレビジョン別冊
はるか昔に大橋さんが載っているからとAmazonに注文したのが、今頃になって届いた(何が届いたのかと思ったよ。いくらなんでも遅すぎやしないかー(2005年11月発売))。
あー大橋さん、同い年だわ。
2 [本]
記憶力を強くする―最新脳科学が語る記憶のしくみと鍛え方 (ブルーバックス)(池谷 裕二)
前から欲しかったんだけど、本屋では見つからなくて。こないだブックオフに行ったらたまたま見つけることができたので、そこでゲット。これいいなー。すばらしい。枕元にずっと置いてる。
2006-02-12 (日) [長年日記] Edit
2006-02-14 (火) [長年日記] Edit
1 [ゲーム]
東北大学未来科学技術共同研究センター 川島隆太教授監修 もっと脳を鍛える大人のDSトレーニング
なんかいつの間にか注文してたらしい(覚えてない)。 前作よりも面白い。とりあえず、最初に測定した脳年齢は25歳だったお。
2006-02-15 (水) [長年日記] Edit
1
multipartの設定
<%= form_tag :action => 'some_action', :multipart => true %>
とか
<%= form_tag {:action => 'some_action'}, {:multipart => true} %>
とかはダメで、
<%= form_tag({:action => 'some_action'}, {:multipart => true}) %>
これだとうまくいく。
2006-02-18 (土) [長年日記] Edit
1 [映画]
CASSHERN [DVD](紀里谷和明/菅正太郎/佐藤大)
こないだTVでやってたやつ。1.3倍速で見たせいか、間延びもせず、むしろ面白かったよ。なんかよく分かんなかったり、どうでもいいことが多々あるけど、とりあえず麻生久美子が出ていればなんだっていいかなあ。
2006-02-20 (月) [長年日記] Edit
2
Code Snippets: Creating a Multiple Row Form [rails]
HDR-DTLとか複数行を一ページで更新だとかはいちいちハマるなあ。なかなかスマートにできない。
2006-02-21 (火) [長年日記] Edit
1
Forms Containing Collections
AWDwRのp.344だと、
<%= start_form_tag %>
<% for @product in @products %>
<%= text_field("product[]", 'image_url') %><br />
<% end %>
<%= submit_tag %>
<%= end_form_tag %>
みたいにすると複数オブジェクトを1フォームで更新できるとかなんとかいってるんだが、text_fieldメソッドのある form_helper.rb を見てみると、
# <%= textfield "person[]", "name" %> # # ...becomes: # # <input type="text" id="person_<%= @person.id %>_name" # name="person[<%= @person.id %>][name]" value="<%= @person.name %>" />
って書いてあって、これはどういうことかというと、これで新規にフォームを作ろうとすると(@productsがidを持たないオブジェクトのコレクションだと)、@person.id のところで死ねる。
で、どうするかというと、あとで書く。
2006-02-22 (水) [長年日記] Edit
1
RailsによるアジャイルWebアプリケーション開発(前田 修吾)
レビューアの高橋さんに届いた分を拝借(自分でもちゃんと予約してマスよ)。
英語版のPDFで検索して、日本語版の本で確認するのだ。快適。
わーくまくまーがッ!
2
複数のRails環境ってどうやって用意するの?
くまくまーのパッチを試してみたいんだけど、今の環境を汚すのはイヤん。 だもんで、複数のRails環境を用意するってどうやるの?ってのが聞きたい。 Gemsに頼ってばかりでよく分からんです。
というか、足回りのことって全然分かんないので、モア精進しないと。
とりあえず、勘でテキトーに使っちゃってるSubversionへの認識を改めるべく『
Subversion実践入門—達人プログラマに学ぶバージョン管理(Mike Mason/でびあんぐる)』を半分くらい読みました。でびあんぐる最高。
THANX!!!
2006-02-23 (木) [長年日記] Edit
1
findならActiveRecord::RecordNotFoundなところも、find_by_idならnilだから
rescueキモス!とか言われたのでとりあえずnilチェックで。
2006-02-26 (日) [長年日記] Edit
1
クラスチェンンジ
読書会で継承のクラスチェンジできるお、みたいなことを言ってみたものの、 よく分からなかったので試してみた。Railsのインストールからやる羽目に(うあー)。
こんなモデルがあります。
class Customer < ActiveRecord::Base
def hello
end
end
class NormalCustomer < Customer
def hello
"hello, I'm normal"
end
end
class SuperCustomer < Customer
def hello
"hello, I'm super"
end
end
NormalCustomer作るお。
>> c1 = NormalCustomer.new
=> #<NormalCustomer:0x397def8 @attributes={"name"=>"", "type"=>"NormalCustomer"}, @ne
w_record=true>
>> c1.hello
=> "hello, I'm normal"
typeフィールドを変更してみるお。
>> c1.type = 'SuperCustomer' => "SuperCustomer"
でもまだNormalCustomerだお。
>> c1.hello => "hello, I'm normal" >> c1.save => true >> c1.hello => "hello, I'm normal"
なので、reloadしてみるお。
>> c1.reload
ActiveRecord::RecordNotFound: Couldn't find NormalCustomer with ID=1
from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/bas
e.rb:412:in `find'
from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/bas
e.rb:1309:in `reload'
from (irb):8
がーん。
なので、またfindしてみる。
>> c1 = Customer.find(c1.id)
=> #<SuperCustomer:0x3907980 @attributes={"name"=>"", "type"=>"SuperCustomer", "id"=>
"1"}>
>> c1.hello
=> "hello, I'm super"
他にやり方あるのかな。
base.rb見てみる。
# Reloads the attributes of this object from the database.
def reload
clear_aggregation_cache
clear_association_cache
@attributes.update(self.class.find(self.id).instance_variable_get('@attributes'))
self
end
これじゃ、サブクラスだとreloadが使えない。
2006-02-27 (月) [長年日記] Edit
1
rescue_action_in_public(exception)
むーこんな便利なものがあったのか。 AWDwR邦訳スゴス(英語版で読み落としていたともいう)。
コントローラで例外がでたら「コントローラ内で rescue しないで」もrescue_action_in_public に例外が渡る。あとは、メソッド内で判別。 controller/application.rb でオーバーライドしておく感じ。
あーじゃあ、find でいいんじゃん。
それと、productionじゃないと動かない。
2006-02-28 (火) [長年日記] Edit
1 Gregor Hohpe さんは今、Google
日曜日にid:yyamanoさんから聞いた。どっちもイメージに合わない。 ということは、Googleの次の方向性が見えたり?
|
Software Configuration Management Patterns: Effective Teamwork, Practical Integration (Software Patterns Series)(Steve Berczuk/Brad Appleton)
Refactoring Databases: Evolutionary Database Design (Addison-Wesley Signature Series)(Scott W. Ambler/Pramodkumar J. Sadalage)
1 thata [俺の実家(岩手)も落花生投げてた希ガス。]
2 takahashim [http://wiki.rubyonrails.org/rails/pages/HowtoUsePostgresVi..]
3 takahashim [つか、「member.memberからほど遠いテーブルのカラム名」ってぜんぜんmemberじゃないような気がしてきま..]
4 しばた [うちの場合は、落花生とか大豆とか、伝六の豆とか、チョコや飴とかをごちゃごちゃに混ぜてまいてたなー。]
5 山岸 [我家 (群馬) も落花生を投げています。]
6 yoosee [うち(東北)も落花生投げてたな、言われてみれば。 なお投げた後でも拾って食えると言うメリットがあります。]
7 babie [ウチは拾って食うために、違うとわかっていながら敢えて、落花生を採用してました。]
8 ogino. [新潟も落花生。]
9 suke [うちの実家もあとから食べられるという理由で、落花生に変わりました。]
10 えぐぞせ [秋田も落花生。]