画面ロード時の処理の作成
品目区分を選択するコンボボックスのデータは、画面ロード時に動的に取得します。このデータ提供部分のビジネスロジックを、これからRuby on Rails 2.0で作成します。
Ruby on Rails 2.0 でアプリケーションを作成するためには、railsコマンドにて新規プロジェクトを作成した上で、scaffoldなどのコマンドによりアプリケーションの雛型を作成していく必要があります。
今回は scaffold により生成したアプリケーションを添付ファイルに用意していますので、ダウンロードして使用してください。
ruby on rails でアプリケーションを作成する方法に関しては、
下記の記事を参考にしてください。
また、ActionWebService の活用方法に関しては、下記の記事を参考にしてください。
テーブルの準備
部品識別マスタ、手配区分マスタ、在庫区分マスタ、支給区分マスタを作成します。下記のスクリプトファイルを記述し、rakeコマンドでテーブルを作成します。
class CreateHinmokuKubun < ActiveRecord::Migration def self.up # 部品識別マスタ create_table :mst_buhin_shikibetsus do |t| t.column :buhin_shikibetsu, :string, :limit=>64 end # 手配区分マスタ create_table :mst_tehai_kubuns do |t| t.column :tehai_kubun, :string, :limit=>64 end # 在庫区分マスタ create_table :mst_zaiko_kubuns do |t| t.column :zaiko_kubun, :string, :limit=>64 end # 支給区分マスタ create_table :mst_shikyu_kubuns do |t| t.column :shikyu_kubun, :string, :limit=>64 end end def self.down drop_table :mst_buhin_shikibetsus drop_table :mst_tehai_kubuns drop_table :mst_zaiko_kubuns drop_table :mst_shikyu_kubuns end end
rake db:migrate
モデルクラスの作成
次に、部品識別マスタおよび手配区分マスタ、在庫区分マスタ、支給区分マスタのモデルクラスを作成します。Ruby on Rails 2.0 のActiveRecord
クラスを継承した単純なクラスです。
class MstBuhinShikibetsu < ActiveRecord::Base end
class MstTehaiKubun < ActiveRecord::Base end
class MstZaikoKubun < ActiveRecord::Base end
class MstShikyuKubun < ActiveRecord::Base end
ウェブサービスクラスの作成
次に、『Rails ActionWebServiceジェネレータのカスタマイズ』の「MstWebServiceGenerator」を使用し、部品識別マスタおよび手配区分マスタ、在庫区分マスタ、支給区分マスタをメンテナンスするウェブサービスを作成します。
下記に部品識別マスタをメンテナンスするウェブサービスクラスを示します。その他のクラスは、添付ファイル同梱のファイルを参照してください。
class MstBuhinShikibetsuServiceController < ApplicationController wsdl_service_name 'MstBuhinShikibetsuService' web_service_api 'MstBuhinShikibetsuService' web_service_scaffold :invoke #------------------------------------------------------------------- # 全~を取得します。 #------------------------------------------------------------------- def find_all MstBuhinShikibetsu.find(:all) end #------------------------------------------------------------------- # ~を新規作成します。 #------------------------------------------------------------------- def create(arg_mst_buhin_shikibetsu) mst_buhin_shikibetsu = MstBuhinShikibetsu.new mst_buhin_shikibetsu.buhin_shikibetsu = arg_mst_buhin_shikibetsu.buhin_shikibetsu if mst_buhin_shikibetsu.save return "Succeeded" else return "Failed" end end #------------------------------------------------------------------- # ~を更新します。 #------------------------------------------------------------------- def update(arg_mst_buhin_shikibetsu) mst_buhin_shikibetsu = MstBuhinShikibetsu.find(arg_mst_buhin_shikibetsu.id) unless mst_buhin_shikibetsu return "Not Found." end mst_buhin_shikibetsu.buhin_shikibetsu = arg_mst_buhin_shikibetsu.buhin_shikibetsu if mst_buhin_shikibetsu.update return "Succeeded" else return "Failed" end end #------------------------------------------------------------------- # ~を削除します。 #------------------------------------------------------------------- def destroy(arg_mst_buhin_shikibetsu) mst_buhin_shikibetsu = MstBuhinShikibetsu.find(arg_mst_buhin_shikibetsu.id) if mst_buhin_shikibetsu.destroy return "Succeeded" else return "Failed" end end end
部品識別マスタなどをメンテナンスするアプリケーションの作成
次に、部品識別マスタおよび手配区分マスタ、在庫区分マスタ、支給区分マスタをメンテナンスするアプリケーションを作成します。Ruby on Rails 2.0のscaffoldジェネレータを使用して、それぞれのアプリケーションを作成します。作成したアプリケーションは添付ファイルに格納されていますので、ダウンロードしてください。
ダウンロードしたファイルをRailsで生成したアプリケーションの配下へ配置すると、下記のURLからそれぞれのマスタをメンテナンスできるようになります(Webサーバの起動が必要です)。
AP名 | URL |
部品識別マスタメンテナンス | http://localhost:3000/mst_buhin_shikibetsus/list |
手配区分マスタメンテナンス | http://localhost:3000/mst_tehai_kubuns/list |
在庫区分マスタメンテナンス | http://localhost:3000/mst_zaiko_kubuns/list |
支給区分マスタメンテナンス | http://localhost:3000/mst_shikyu_kubuns/list |
次に、表3~6のようにデータを登録します。
ID | buhin_shikibetsu |
1 | 梱包計画品 |
2 | 組立計画品 |
3 | オプション計画品 |
4 | 先行部組計画品 |
5 | 先行加工計画品 |
6 | 補修部品計画品 |
ID | tehai_kubun |
1 | 内作品 |
2 | 外作品 |
3 | 外作品(外注費) |
4 | 完品購入品 |
5 | 材料・素材 |
6 | 手配不要品(ダブルビン、受給品) |
ID | zaiko_kubun |
1 | 在庫品 |
2 | 非在庫品 |
ID | shikyu_kubun |
1 | 一般部品 |
2 | 無償支給品 |
3 | 有償支給品 |
4 | 無償受給品 |