rails:721
From: のりお <toykyo@t...>
Date: Sat, 03 Dec 2005 00:41:00 +0900
Subject: [rails:721] Re: ActiveRecordでのPrimaryKeyについて
ぼくが答えられる範囲内でお話します。 まず、プライマリキーの列名をデフォルト以外に設定する場合は class Shain < ActiveRecord::Base set_primary_key "shain_id" end のような感じで設定します。 この場合、どうやらActiveRecordは自動でidを割り当てなく なるようなので、手動で指定することになります。 試してはないですが、 shain = Shain.new shain.id = "SHAIN-001" shain.name = "Taro Yamada" shain.save のように id = value で、手動で設定するみたいです。 ここで注意することは shain.shain_id = "SHAIN-001" ではないということです。プライマリキーの名前をどうしようと 必ず、「id」でプライマリキーの設定をしてください。 ということで、お望み通り固定値でプライマリキーを 扱えるみたいですけど・・・検討違いだったらすみません。 関連付けについては、belongs_toとhas_manyで 普通にできるんじゃないでしょうか。 まだまだ、ruby&rails初心者なので、知ってる範囲で答えてみました。 >みなさん、はじめまして。菊池と申します。 > >ActiveRecordを使用する際のプライマリーキーidについて >お知恵をお貸しください。 > >現在、RoRを使用して、とある業務システムを構築しようと >しています。 >そのシステムは、多くのテーブルがあり、これらのアクセスに >ActiveRecordを使用したいと考えています。 > >ただ、ActiveRecordの仕様を見てみると、デフォルトは列名はidで、かつ >int型のauto_incrementのようです。 > >例えば、以下のようなTable構造がある時に、 >ActiveRecordを適用するには、どのようにすればよいでしょうか? > >// 社員テーブル >create table shain ( > shain_id int primary key, // 社員ID > busho_id int, // 部署テーブルへのFK > shain_name varchar(64), > .... > constraint abc forign key (busho_id) references busho(busho_id) >) > >// 部署テーブル >create table busho ( > busho_id int primary key, // 部署ID > busho_name varchar(128), > .... >) > >ちなみに、社員ID、部署IDは固定で決められていて、これをauto_incrementに >してPrimary Keyに変更するのは、ちょっと無理です。 > >つまり、PrimaryKeyとなるべき値は固定値で、かつ、それが外部キーによって >他のテーブルと関係付けられる場合についての、ActiveRecordのアプローチに >ついてお知恵をお貸しください。 > >または、テーブルをこんな風に変更するとシステム要件もActiveRecordの仕様にも >合うとかでも結構です。 > >以上よろしくお願い致します。 > >-- >ML: rails@r... >使い方: http://QuickML.com/ >Web Site: http://wiki.fdiary.net/rails/ >ML Archives: http://www.fdiary.net/ml/rails/ -- ML: rails@r... 使い方: http://QuickML.com/ Web Site: http://wiki.fdiary.net/rails/ ML Archives: http://www.fdiary.net/ml/rails/
720 2005-12-02 12:14 [gungle@g... ] ActiveRecordでのPrimaryKeyについて -> 721 2005-12-02 16:41 ┣[toykyo@t... ] 722 2005-12-02 16:44 ┗[gollum@h... ] 728 2005-12-04 05:20 ┗[gungle@g... ] 743 2005-12-05 10:04 ┗[someeda@g... ] 744 2005-12-05 11:37 ┗[gungle@g... ] 745 2005-12-05 13:46 ┗[someeda@g... ] 750 2005-12-06 13:42 ┗[gungle@g... ]