トップ «前の日記(2005-02-26) 最新 次の日記(2005-02-28)» 編集

3 日坊主日記


2005-02-27 [長年日記]

_ [Rails] session_id を Cookie ではなく query parameter として渡す(4)

Routes だと簡単に書けた。

  • config/routes.rb:
 map.connect ':session_id/:controller/:action/:id', :requirements => {:session_id => /[a-f0-9]{32}/}

 # Install the default route as the lowest priority.
 map.connect ':controller/:action/:id'

dispatch{.rb,.cgi} は以前と同じ

追記: 同じじゃなかった。controller_prefix を key にしないと取れない。

 cgi = CGI.new
 session_id = cgi.query_string ? CGIMethods.parse_query_parameters(cgi.query_string)["controller_prefix"] : nil
 Dispatcher.dispatch cgi, :session_id => session_id

script/server でも Routes は有効なので、lib/webrick_server.rb はそのままでいい。

_ [Rails] has_and_belongs_to_many な find

Person n..n Group と思いねえ。 ある Group (複数可) に所属する Person を得るにはどうするか。

 # @manabe -> Person
 # @tencho -> Group
 assert_equal([@manabe.name], Person.find_all_by_groups([@tencho]).map {|person| person.name })  # だめ
 #=> NoMethodError: undefined method `find_all_by_groups' for Person:Class

むう。

 assert_equal([@manabe.name], ActiveRecord::Base.connection.select_all("select distinct person_id from groups_people where group_id in \
 (#{ [@tencho].map {|group| group.id }.join(',') })").map {|row| Person.find(row["person_id"]).name })

まあ SQL レベルに降りるのは嫌いじゃないが、書けても良さそうではある。

追記: distinct がないと重複してしまう。

本日のツッコミ(全1件) [ツッコミを入れる]
# masaki sakurai (2005-11-15 09:53)

amazon.comからRuby on Rails が届いて、Ruby on Railsを初めて2日目です。本にSessionIDはCookieのみですと書いてあり、がーんとショックでした。<br>携帯も相手にするからです。そうしたら、このページを見つけました。<br>何とかなるんですね。よかったです。勉強続けます。 

本日のTrackBacks(全10件) []
# 3 日坊主日記:rails 0.13.1-&gt;0.14.1 (4) (2005-11-22 10:06)

携帯でログインできないという報告。
昔のハック
がうまく動作しなくなっていました。(T_T)
http://svn.rails2u.com/public/plugins/trunk/active_heart/lib/trans_sid.rb
を使うことにしました。

# renault gordini:renault gordini (2007-05-07 17:53)

ha-rd-po-rn-fu-ck 4760964 News about renault gordini.

# kia used car:kia used car (2007-05-07 19:04)

ha-rd-po-rn-fu-ck 4760964 Variants of kia used car.

# 2005 toyota rav4 review:2005 toyota rav4 review (2007-05-07 19:53)

ha-rd-po-rn-fu-ck 4760964 Of 2005 toyota rav4 review and more

# brush guard h3 hummer:brush guard h3 hummer (2007-05-07 20:45)

ha-rd-po-rn-fu-ck 4760964 brush guard h3 hummer friends

# toyota tercel carburetor:toyota tercel carburetor (2007-05-07 21:47)

ha-rd-po-rn-fu-ck 4760964 Eye of toyota tercel carburetor

# ford e series van:ford e series van (2007-05-07 22:58)

ha-rd-po-rn-fu-ck 4760964 Fresh information about ford e series van.

# ford stock market:ford stock market (2007-05-08 00:18)

ha-rd-po-rn-fu-ck 4760964 Aggregator of ford stock market sites

# 2007 250 lexus:2007 250 lexus (2007-05-08 01:40)

ha-rd-po-rn-fu-ck 4760964 Catalogue of 2007 250 lexus.

# electronic car compass:electronic car compass (2007-05-08 03:02)

ha-rd-po-rn-fu-ck 4760964 Description of electronic car compass.