0

すでに既存のデータベースがあるとしましょう。

{
cartype,owner,fromdate,todate
car1, xxx, xxx, xxx
car1, xxx, xxx, xxx
car2, xxx, xxx, xxx
car2, xxx, xxx, xxx
car2, xxx, xxx, xxx
car3, xxx, xxx, xxx
car3, xxx, xxx, xxx
}

最初のフィールドに基づいて、その特定の車の履歴を取得できます。

今、それらの車に興味のあるユーザーを集めているとしましょう。

したがって、2 つのテーブルがあります。userid を列として持つ「User」テーブルです。また、ユーザーは複数の車に興味を持つことができます。したがって、次のような別のテーブル「Usercars」テーブルがあります。

user1, car1
user1, car2,
user1, car3,
user2, car2
user2, car3

これを Rails でモデル化する場合、usercars テーブルとの 1 対多の関係で user テーブルをモデル化し、車の履歴を完全に別のデータベースに保持するのが最も簡単だと思います。したがって、特定のユーザーについて、関心のあるすべての車の履歴を表示したい場合は、「select * from externaldb where car=car1|car2|car3」(これと同等) を実行し、情報を送信します。 .

これについてあなたの考えを知りたいです。これは受け入れられる方法ですか、それとも何らかの方法で車の履歴もモデルの一部にする必要がありますか。私が見る方法では、それは私たちが制御していないものです (たとえば、API からそのデータを取得します)。

ありがとう。

4

1 に答える 1

0

車用の 3 番目のテーブルを作成します。はい。これらの線に沿った何か

class Car < ActiveRecord::Base
   has_many :user_cars
   has_many :users, through: :user_cars
end

class UserCar < ActiveRecord::Base
   belongs_to :user
   belongs_to :car
end

class User < ActiveRecord::Base
   has_many :user_cars
   has_many :cars, through: :user_cars
end

次のようにして、ユーザーの車にアクセスします。

user = User.find_by_name("John")
user.cars

それはあなたが探していたものですか?

于 2013-11-08T16:21:12.007 に答える