rails:1195
From: Yosuke Suzuki <yosuke@j...>
Date: Mon, 29 May 2006 00:56:04 +0900
Subject: [rails:1195] す、せ、そ、がの処理で問題
suzukiと申します。 railsというよりもrubyの書き方の問題だと思われますが、 何かご存知のかたいらっしゃいましたら ご返答いただけると助かります。 現在、取引先企業の電話番号を 管理するアプリケーションを作成しています。 データベースのshamei_kana という項目には、平仮名の社名が登録されています。 getパラメータでエスケープした「あ」など五十音の1文字を 渡すことで、「あ」の読みで始まる企業の一覧を表示するようにしています。 濁音をもつ、か行、さ行、た行などについては succメソッドを使って、例えば「か」なら「が」も対象に するようにしています。 おおむね意図したとおり動いてますが、 「す」の場合、「す」と「ず」で始まるレコードだけでなく、「お」で 始まるものも表示されてしまいます。 「せ」の場合は「が」、「そ」の場合は「ぎ」 「か」の場合は「ぜ」、「き」の場合は「ぞ」です。 このような意図しないレコードまでを取り出してしまう 状況を解決する方法はありませんでしょうか? よろしくお願いします。 以下controllerの抜粋 <テーブル名はreleases> require 'jcode' oto = @params[:oto] oto = URI.unescape(oto) if oto =~ /[あいうえおなにぬねのまみむめもやゆよらりるれろわを]/ oto = oto + "%" @release_pages, @releases = paginate :releases, :per_page => 10000, :conditions => ["shamei_kana LIKE ?", oto] elsif oto =~ /[かきくけこさしすせそたちつてと]/ oto2 = oto.succ oto = oto + "%" oto2 = oto2 + "%" @release_pages, @releases = paginate :releases, :per_page => 10000, :conditions => ["shamei_kana LIKE ? OR shamei_kana LIKE ?", oto, oto2] elsif oto =~ /[はひふへほ]/ oto2 = oto.succ oto3 = oto2.succ oto = oto + "%" oto2 = oto2 + "%" oto3 = oto3 + "%" @release_pages, @releases = paginate :releases, :per_page => 10000, :conditions => ["shamei_kana LIKE ? OR shamei_kana LIKE ? OR shamei_kana LIKE ?", oto, oto2, oto3] end -- ML: rails@r... 使い方: http://QuickML.com/
-> 1195 2006-05-28 17:56 [yosuke@j... ] す、せ、そ、がの処理で問題 1196 2006-05-28 18:35 ┣[yosuke@j... ] 1198 2006-05-29 04:55 ┗[someeda@g... ] 1199 2006-05-30 02:15 ┗[yosuke@j... ]