首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Review类创建

Review类创建
EN

Stack Overflow用户
提问于 2020-12-21 07:44:12
回答 1查看 74关注 0票数 0

下面看到的Review类表示用户为产品提交的评审。在代码中的其他地方,Review.recent是用一个product_id调用的,它只是一个代表单个产品的唯一数字。填写代码,使它像预期的那样工作!

Review.recent -这个函数应该返回5个最近的评论(按submit_time排序)和指定的product_id。

<=> -这个特殊的Ruby函数在比较两个对象以进行排序时调用。它返回1、0或+ 1,这取决于对象是小于、等于还是大于其他对象。您将希望按submit_time对项进行排序,以便首先显示最近的项。

set_submit_time --这个函数是在创建评审之前调用的。我们可以使用Ruby类将submit_time设置为now,这样我们就可以知道审查是什么时候创建的。

我是新的红宝石,我想要这个代码为我非常重要的工作,所以我如何完成它,请帮助我!

代码语言:javascript
复制
class Review < ApplicationRecord
  # Every Review has a product_id and submit time
  attr_accessor :product_id
  attr_accessor :submit_time

  # Before the new record is created, we'll call the :set_submit_time method
  before_create :set_submit_time

  def self.recent(product_id)
    # Return only the 5 newest results for this product
    # Reference: https://ruby-doc.org/core-2.4.2/Enumerable.html
    Review.all
  end

  def <=>(other_review)
    # Implement the comparison function for sorting
    # Reference: http://ruby-doc.org/core-2.4.2/Comparable.html
  end

  private

  def set_submit_time
    # Set the submit_time
    # Reference: https://ruby-doc.org/core-2.2.4/Time.html
  end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-21 12:12:31

  1. self.recent

这是要求您通过submit_time 命令,并返回前5结果。

若要执行排序,请参见:https://apidock.com/rails/ActiveRecord/QueryMethods/order

若要执行限制,请参见:https://apidock.com/rails/ActiveRecord/QueryMethods/limit

如果你还困在这个问题上,请给我们看看你试过什么。

  1. <=>

如果单击您提供的注释(http://ruby-doc.org/core-2.4.2/Comparable.html)中的链接,则解决方案几乎与该示例相同。

如果你还困在这个问题上,请给我们看看你试过什么。

  1. set_submit_time

值得一看:https://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html --理解回调的含义。基本上,只要创建了新记录,这个方法就会被自动调用。(根据相当不言自明的名称:before_create!),您可能已经猜到了这一点。

同样,该页面上的第一个示例几乎与您的场景相同。您可以使用Time.now获取当前时间。

如果你还困在这个问题上,请给我们看看你试过什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65389089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档