[前][次][番号順一覧][スレッド一覧]

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...         ]