Rails的历史表设计

时间:2015-11-17 23:13:38

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

我继承了另一个有历史记录表的项目。这些表看起来像这样,并且位于no delete SQL Server数据库中。

注意:每张桌子都是一对"的表格。每个表都有一个父表和子表。

tBooks

id
book_id (FK to tBooks id column)
... (related book data)
created_at
updated_at
deleted_at

tBookDetails

id
created_at
updated_at
deleted_at

混合任何与此表的关系,例如ActiveRecord如何处理他们在Rails中的关系。

tCheckouts

id
checkout_id
book_id
user_id
due_at
... (related checkout data)
created_at
updated_at
deleted_at

tCheckoutDetails

SELECT bd.*
FROM tBooks b
INNER JOIN tBookDetails bd ON bd.book_id = b.id
WHERE bd.deleted_at IS null
  AND b.deleted_at IS null

基本上tBooks表在tBookDetails表中有一条带有多个子记录的记录。唯一的#34;活跃的" record是子项的deleted_at表中具有NULL的任何记录。它让我想起了一个维基百科类型的数据库,其中每条记录有一个变化的历史记录,但一次只有一条活动记录。

当前要检索活动记录,数据库包含一个SQL Server视图,如下所示:

self.mapViewOutlet.removeAnnotation(CarAdnotaion(coordinate: (lm.location?.coordinate)!))

Ruby on Rails如何处理这样的数据库?

1 个答案:

答案 0 :(得分:0)

在Rails中非常简单,您需要associationsscopes并且非标准表名称将要求您override the table name