相关疑难解决方法(0)

如何使用Ruby on Rails中的映射表跟踪模型历史记录?

梦想

我想记录用户何时更改其地址.

这样,当下订单时,它将始终能够引用订单放置时使用的用户地址.

可能的架构

users (
  id
  username
  email
  ...
)

user_addresses (
  id
  label
  line_1
  line_2
  city
  state
  zip
  ...
)

user_addresses_map (
  user_id
  user_address_id
  start_time
  end_time
)

orders (
  id
  user_id
  user_address_id
  order_status_id
  ...
  created_at
  updated_at
)
Run Code Online (Sandbox Code Playgroud)

在sql中,这可能类似于:[sql]

select ua.*

from  orders    o

join  users     u
  on  u.id = o.user_id

join  user_addressses_map   uam
  on  uam.user_id = u.id
  and uam.user_address_id = o.user_address_id

join  user_addresses        ua
  on  ua.id = uam.user_address_id
  and uam.start_time < o.created_at
  and (uam.end_time >= o.created_at or uam.end_time …
Run Code Online (Sandbox Code Playgroud)

schema activerecord ruby-on-rails

9
推荐指数
3
解决办法
1万
查看次数

标签 统计

activerecord ×1

ruby-on-rails ×1

schema ×1