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