仕入先マスタの検索ロジックの作成とその反映
仕入先マスタの検索ロジックをRuby on Rails2.0にて作成し、画面上の検索ボタン押下時にその検索ロジックを呼び出し、一覧で表示するようにします。
また、仕入先の選択ボタン押下時に、一覧で選択された仕入先の情報が購買情報背景の上に配置されている仕入先コードテキストボックスと仕入先名テキストボックスへ、反映されるようにします。
仕入先マスタの準備
まず、仕入先マスタをデータベース上に作成します。
class CreateMstShiiresaki < ActiveRecord::Migration def self.up # 仕入先マスタ create_table :mst_shiiresakis do |t| t.column :shiiresaki_cd , :string, :limit=>10 t.column :shiiresaki_mei, :string, :limit=>255 end end def self.down drop_table :mst_shiiresakis end end
上記のスクリプトを作成し、rake
コマンドにてデータベース上に仕入先マスタを作成します。
rake db:migrate
仕入先モデルクラスの作成
次に、仕入先マスタのモデルクラスを作成します。Ruby on Rails 2.0 のActiveRecord
クラスを継承した単純なクラスです。
class MstShiiresaki < ActiveRecord::Base end
Webサービスクラスの作成
Rails ActionWebServiceジェネレータのカスタマイズの「MstWebServiceGenerator」を使用し、仕入先マスタをメンテナンスするWebサービスを自動生成します。
図2に示される仕入先の検索ボタンなどの動作に対応するために、find_by_shiiresaki_cd
やfind_by_shiiresaki_mei
のメソッドを追加します。以下に、それらのメソッドを追加したWebサービスを示します。
class MstShiiresakiServiceController < ApplicationController wsdl_service_name 'MstShiiresakiService' web_service_api 'MstShiiresakiService' web_service_scaffold :invoke #----------------------------------------------------------------------------- # 全~を取得します。 #----------------------------------------------------------------------------- def find_all MstShiiresaki.find(:all) end #----------------------------------------------------------------------------- # 仕入先コードを条件として検索を行います。 #----------------------------------------------------------------------------- def find_by_shiiresaki_cd(arg_shiiresaki_cd) MstShiiresaki.find_by_shiiresaki_cd(arg_shiiresaki_cd) end #----------------------------------------------------------------------------- # 仕入先名を条件として検索を行います。 #----------------------------------------------------------------------------- def find_by_shiiresaki_mei(arg_shiiresaki_mei) #MstShiiresaki.find_by_shiiresaki_mei(arg_shiiresaki_mei) # 検索条件 conditions = nil conditions = ["shiiresaki_mei like ?"] if shiiresaki_mei = arg_shiiresaki_mei shiiresaki_mei = shiiresaki_mei + "%" conditions << shiiresaki_mei else conditions << "%" end @mst_shiiresakis = MstShiiresaki.paginate \ :conditions=>conditions, \ :page=>params[:page], :per_page=>100 return @mst_shiiresakis end #----------------------------------------------------------------------------- # ~を新規作成します。 #----------------------------------------------------------------------------- def create(arg_mst_shiiresaki) mst_shiiresaki = MstShiiresaki.new mst_shiiresaki.shiiresaki_cd = arg_mst_shiiresaki.shiiresaki_cd mst_shiiresaki.shiiresaki_mei = arg_mst_shiiresaki.shiiresaki_mei if mst_shiiresaki.save return "Succeeded" else return "Failed" end end #----------------------------------------------------------------------------- # ~を更新します。 #----------------------------------------------------------------------------- def update(arg_mst_shiiresaki) mst_shiiresaki = MstShiiresaki.find(arg_mst_shiiresaki.id) unless mst_shiiresaki return "Not Found." end mst_shiiresaki.shiiresaki_cd = arg_mst_shiiresaki.shiiresaki_cd mst_shiiresaki.shiiresaki_mei = arg_mst_shiiresaki.shiiresaki_mei if mst_shiiresaki.update return "Succeeded" else return "Failed" end end #----------------------------------------------------------------------------- # ~を削除します。 #----------------------------------------------------------------------------- def destroy(arg_mst_shiiresaki) mst_shiiresaki = MstShiiresaki.find(arg_mst_shiiresaki.id) if mst_shiiresaki.destroy return "Succeeded" else return "Failed" end end end