所以,我有一个带有用户个人资料的用户的应用程序,我有一个访问者标签,我想向访问他们个人资料的用户显示。
我怎么能做到这一点?我现在有一个用户模型,我猜我可能需要使用HMT吗?即用户通过user_visitors或其他东西拥有很多访问者。你能否澄清一下如何做到这一点?
答案 0 :(得分:6)
您可以创建名为Visit
class Visit < ActiveRecord::Base
belongs_to :user
belongs_to :visitor, class_name: 'User', foreign_key: 'visitor_id'
end
和用户模型:
class User < ActiveRecord::Base
has_many :visits
has_many :visitors, through: :visits
end
要创建访问,请将您的控制器users_controller置于before_action:
def create_visit
@user.visits.create(visitor: current_user)
end
或者,如果您不想重复访问:
def create_visit
@user.visits.where(visitor: current_user).first_or_create
end
和vualá!
现在您可以使用以下内容:
current_user.visitors
或者有些条件:
current_user.visitors.where('created_at > ?', 1.month.ago)
您也可以为您提供条件:
class User < ActiveRecord::Base
...
has_many :recent_visitors, through: :visits, source: :visitor, conditions: [ "created_at > ?", 1.month.ago ]
...
end
希望它有所帮助!