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 个表:“用户”表,其中用户 ID 为列。一个用户可能对多辆汽车感兴趣。所以我们有另一个表“Usercars”表,它将有如下内容:

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

现在,如果想在 Rails 中对此进行建模,我认为最简单的方法是将用户表建模为与 usercars 表具有一对多关系,并将汽车历史记录保存在一个完全独立的数据库中。因此,对于特定用户,如果我们想显示他感兴趣的所有汽车的历史记录,我们执行“select * from externaldb where car=car1|car2|car3”(相当于)并发送信息.

我想知道你对此的看法。这是一种可接受的方式,还是我应该以某种方式让汽车历史也成为模型的一部分,因为我看到它的方式,这是我们无法控制的(例如,我从 api 获取数据)。

谢谢。

4

1 回答 1

0

你想为汽车创建第三个表是的。沿着这些思路

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 回答