SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Flash CS3とRoRで構築する業務アプリケーション

Flash CS3とRoRで構築する業務アプリケーション 第2回

Flashによる生産管理系アプリケーション - 品目マスタメンテナンスの作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード 003-Flash_.zip (809.9 KB)
ダウンロード 004-RoR_.zip (13.4 KB)

仕入先マスタの検索ロジックの作成とその反映

 仕入先マスタの検索ロジックをRuby on Rails2.0にて作成し、画面上の検索ボタン押下時にその検索ロジックを呼び出し、一覧で表示するようにします。

 また、仕入先の選択ボタン押下時に、一覧で選択された仕入先の情報が購買情報背景の上に配置されている仕入先コードテキストボックスと仕入先名テキストボックスへ、反映されるようにします。

仕入先マスタの準備

 まず、仕入先マスタをデータベース上に作成します。

0xx_create_mst_shiiresaki.rb
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コマンドの実行
rake db:migrate

仕入先モデルクラスの作成

 次に、仕入先マスタのモデルクラスを作成します。Ruby on Rails 2.0 のActiveRecordクラスを継承した単純なクラスです。

mst_shiiresaki.rb
class MstShiiresaki < ActiveRecord::Base
end

Webサービスクラスの作成

 Rails ActionWebServiceジェネレータのカスタマイズの「MstWebServiceGenerator」を使用し、仕入先マスタをメンテナンスするWebサービスを自動生成します。

 図2に示される仕入先の検索ボタンなどの動作に対応するために、find_by_shiiresaki_cdfind_by_shiiresaki_meiのメソッドを追加します。以下に、それらのメソッドを追加したWebサービスを示します。

mst_shiiresaki_service_controller.rb
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

次のページ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Flash CS3とRoRで構築する業務アプリケーション連載記事一覧
この記事の著者

ryujinseiichi(リュウジンセイイチ)

http://ryujinseiichi.sblo.jp/ RubyやAIRなどの新規技術に興味があり、研究を行っています。 最近、seasar2やBPMの研究も始めました。  

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2881 2008/09/01 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング