【问题标题】:Devise Invitable showing accepted invites设计邀请显示已接受的邀请
【发布时间】:2018-05-22 01:02:31
【问题描述】:

我正在使用https://github.com/scambra/devise_invitable

我正在尝试显示已接受邀请的用户邀请的用户。

现在,这就是我所拥有的:

@invites = User.where(invited_by_id: @user.id)

但这也列出了仍未接受邀请的空白用户,如何仅显示接受给定用户邀请的用户?

【问题讨论】:

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


    【解决方案1】:

    我不喜欢看到实际的where 代码,所以我通常这样做:

    @invites = User.where.not(invitation_accepted_at: nil).where(invited_by_id: @user.id)
    

    注意这里使用 rails 4 语法where.not

    【讨论】:

    • 我喜欢新的语法,但我不喜欢连接几个 where 子句 (.where(..).where(...)) 来获取 (... AND...) .就像在 SQL 中一样,我确实喜欢只有一个 where 子句。
    • 我个人并不介意它们,但一种解决方法是创建类方法 (self.invitation_not_accepted)
    【解决方案2】:

    我猜在接受邀请之前,invitation_accepted_at 字段将是 nil。所以这将是查询(也与 Rails 3 兼容):

    @invites = User.where("invited_by_id = ? AND invitation_accepted_at IS NOT ?", @user.id, nil)
    

    【讨论】:

      【解决方案3】:

      上面的代码将以一种奇怪的方式运行。 Devise_invitable 文档中有一些助手(invitation_not_accepted &invitation_accepted)。有点习惯:

      直接在视图中:

      <%= Member.invitation_not_accepted.where(invited_by_id: current_member.id).count %>
      
      <%= Member.invitation_accepted.where(invited_by_id: current_member.id).count %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-18
        • 2012-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多