2011-07-28 11 views
1

Railsでは比較的新しいです。Rails - 大きなテーブルと分散テーブル

私はDeviseを通じてUserモデルを持っています。私は別のプロファイルモデルでユーザーに必要なすべての追加フィールドを持つ方が効率的かどうか疑問に思っています。

新しいモデルを作成し、そのモデルにhas_one関連付けを使用することを検討しているような状況に遭遇していますが、ユーザーモデル内のユーザーに属しているすべての属性を持っていれば、どのようにこのような状況に対処していますか?アプリケーションのパフォーマンスにどのような影響がありますか?

特にパフォーマンスの面で、has_one関係を作成することの利点と欠点について詳しく説明できます。

答えて

0

私も同様にレールには比較的新しいですが、これは

のRailsでの団体の利益は、私が考えるかなり明白です...私の感想です。この特定のケースでは、いずれにしてもうまくいくと思います。ここで考慮すべきいくつかのものは、あなたがhas_oneの関係を使用している場合、あなたは、プロファイルを参照しているときは、これに似たものになってしまうだろうことを覚えておく必要があります...

です:

user = User.first 

puts user.profile.first_name 
puts user.profile.age 

十分に簡単、 user.first_nameのようなものを使用したい場合は、そのメソッドをプロファイルモデルに委任する必要があります。これはすべて優先事項です。

+1

ActiveRecordは、そのデータをキャッシュしてキャッシュする必要がないかぎり、関連付けを取り消さないことについて比較的知的です。それについて考えるもう1つの方法は、ユーザーテーブルにすべての追加データがあると、誰かがシステムにログインしようとするたびにそのデータにアクセスして照会するということです。私の経験では、ユーザーテーブル上のすべてのことが、関連付けよりもはるかにあなたのアプリケーションを駄目にしています。また、すべてのデータを参照すると、メモリの2倍の75,000のオブジェクトと、メモリの1/2の150,000のオブジェクトの量はいくらですか。 – rmw

関連する問題