ruby-on-rails - 如何显示谁访问了您的个人资料?

标签 ruby-on-rails ruby ruby-on-rails-4

所以,我有一个应用程序,其中包含拥有用户个人资料的用户,并且我有一个访问者选项卡,我想向访问过他们的个人资料的用户显示。

我怎样才能做到这一点?我现在有一个用户模型,我猜我可能需要使用 HMT? IE。一个用户通过 user_visitors 之类的方式有_many 访问者..你能解释一下如何做到这一点吗?

最佳答案

你可以创建一个连接模型,命名为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

要创建访问,请将您的 Controller 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

希望对您有所帮助!

关于ruby-on-rails - 如何显示谁访问了您的个人资料?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21317985/

相关文章:

ruby-on-rails - STI、MTI 或 CTI,目前建议的 Rails 4 解决方案是什么?

ruby-on-rails-4 - 在 before_action 短路自定义 ​​404 页面处理程序中引发异常

ruby-on-rails - ActiveRecord、方法链和请求执行

ruby-on-rails - Facebook Omniauth 登录未返回所有字段

javascript - rails 4 : How to style navigation for current page using jQuery

ruby-on-rails - 在 Rails 中使用 XML 发出 SOAP 请求

ruby - 使用 Savon 进行 HTTPS 调用

ruby-on-rails - 使用 Capistrano Deploy - Rails 复制 Figaro 的 application.yml

ruby-on-rails - 如何将 html5 数据属性添加到 Rails form_tag

ruby - 想安装 Jruby 但被 RVM 吓倒