【问题标题】:Fetch the first record with a foreign key使用外键获取第一条记录
【发布时间】:2018-03-29 11:02:01
【问题描述】:

我有一个User 模型和一个Deposit 模型。

一位用户has_many :deposits 和一位存款belongs_to :user

现在, deposit 表有 user_id 作为外键。 现在如何识别特定存款是特定用户的首次存款?

其实我需要在Deposit模型中写一个实例方法来识别这个。

请帮我解决这个问题。提前致谢!

【问题讨论】:

    标签: ruby-on-rails activerecord model


    【解决方案1】:

    如果您想检查该存款是目前唯一的一项现有存款:

    def only_one?
      user.deposits.count == 1
    end
    

    【讨论】:

      【解决方案2】:

      您可以通过created_at 属性轻松识别。

      例如

      user.deposits.order(:created_at).first 
      

      希望对你有帮助

      【讨论】:

      • 也许还会检查用户是否有任何存款:if @user.deposits.any? then ...
      【解决方案3】:

      为用户提取第一笔存款:

      class User
        def first_deposit
          deposits.order(created_at: :desc).first
        end
      end 
      

      检查存款是否是特定用户的第一笔存款:

      class Deposit
        def first?
          self.class.where(user: user).order(created_at: :desc).first == self
        end
      end
      

      【讨论】:

        【解决方案4】:

        你可以试试这个

        class Deposit < ApplicationRecord
        
          def self.get_first_deposit(user)
            where(user_id: user.id).order(:created_at).first
          end 
        
        
        end
        

        Deposit.get_first_deposit(user) 将返回第一条记录。

        【讨论】:

        • 如题,应该是实例方法。
        猜你喜欢
        • 2017-03-15
        • 1970-01-01
        • 2014-11-08
        • 2018-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-28
        • 1970-01-01
        相关资源
        最近更新 更多