0

我有 2 个模型,例如UserTracking

Tracking模型下面有这 6 列

  • ID
  • 用户身份
  • target_user_id
  • 访问_at
  • created_at
  • 更新时间

这个模型的目标是知道谁访问了我的users/show.html.erb页面。

每个用户都想知道谁查看了我的页面。

如何在UserTracking模型中建立关联?

是这样的吗?

模型/用户.rb

has_many: trackings

模型/tracking.rb

belongs_to: user
belongs_to: user, :foreign_key => "target_user_id", :class_name => "TargetUser"

毕竟,
current_user.tracking.target_user显示 current_user 访问的用户?

那么如何检索访问 current_user 的跟踪记录呢?在这种情况下我该如何编码?

4

2 回答 2

1

在您的项目中没有名称为“TargetUser”的类, :class_name选项是指定要设置关联的模型的名称

models/tracking.rb像这样改变你的代码,

belongs_to: user
belongs_to: target_user, :foreign_key => "target_user_id", :class_name => "User"

然后您可以通过 tracking.target_user 从跟踪中访问用户

于 2013-08-07T06:07:36.067 回答
1

首先,您的accessed_at列是多余的,您可以像这样简单地委托它:

delegate :accessed_at, to: :created_at

模型/tracking.rb

belongs_to: tracked_user, foreign_key:  'target_user_id', class_name: 'User'

然后遍历它:

current_user.trackings.each do |t|
  puts t.tracked_user_id
end
于 2013-08-07T06:29:23.447 回答