2012-01-09 7 views
1

私はテーブルemail_addressesとテーブルユーザーを持っています。ユーザー名としてユーザーの電子メールアドレスを使用しています。 email_address_idフィールドだけで、ログイン情報としてユーザ名のためにEMAIL_ADDRESSESテーブルに電子メールを見つけるだろうメールはユーザーに属します - ユーザー名として電子メールを使用するCakephp 2.0.5

email_address_id 
password 

:だからusersテーブルは次のようなものになるだろう。

私はusernameフィールドをauthコンポーネントのemail_addressのような別の名前に変更できますが、別のテーブルのフィールドをユーザー名として使用するにはどうすればよいですか?

今私は電子メールのテーブルと本当に悪いデータベースデザインのように思えるユーザーテーブルに電子メールを挿入する必要があります。

助けていただけたら幸いです!私は

答えて

2

CakePHPの2.0.5を使用してい

あなたが本当にこれを実行する必要がありますか?一緒に属しているものを一緒に保つことは良いことです。

認証のために電子メールをユーザーモデルに保存します。

それが必要な場合は、以降のメールにemail_addressを使用してください。

編集:一部の人がアクセスし、他ではないが付与されている場合

は今、私はhas_access int型(1)または何のようなものがあなたに話す、Userモデルにフィールドを追加し、それは時値ですチェックしますログイン。

+0

私は同意します..あなたの関係について何か怪しいものもあります。 [この図](http://mboffin.com/stuff/ruby-on-rails-data-relationships.png)を見ると、外部キー*を持つテーブルは*他のテーブルに属します。 「電子メールがユーザーに属している」と言うと、「ユーザーは電子メールに所属しています」という意味です。これは、本質的には、「電子メールに多数のユーザがいる」または「電子メールにhasOneユーザがいる」ということを意味します。ある電子メールアドレスを多くのユーザーアカウントに関連付けることを実際に計画していますか?また、これが代わりにhasOne(1:1の関係)であれば、余分なテーブルはなぜですか? – deizel

+0

まあ、私はデータベースにログインする人以外の人のために電子メールアドレスを持っています。たとえば、次のように動作します。Person hasOne EmailAddress - EmailAddress belongsTo Person。これらの「人」の一部もログインが許可されます。すでにemail_addressesテーブルに存在するメールアドレスは、そのユーザー名になります。だから私は自分のemail_addressを新しいテーブルに挿入する必要があります。ユーザーごとに1つの電子メールしか持たないという関係はありません。データベースにすでに存在するデータを他の場所に追加するという点はありません。 –

+0

実際に私が現在使用しているテーブルについては間違っていましたが、何も変わっていないと思います。私は人のテーブルのフィールドとして電子メールアドレスを持っています。だから1人あたり1つのアドレスしかないのですが、私は人物テーブルの電子メールフィールドでユーザー名としてログインする可能性があると考えていました。私がCakeを使っていなかったら、これがデータベースを設計する最良の方法だと思います。すべての人がユーザーになるわけではないので、私はusersテーブルに電子メールを入れることはできません。なぜデータを複製するのですか?私は利益を見ません。 –

関連する問題