下面看到的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,这样我们就可以知道审查是什么时候创建的。
我是新的红宝石,我想要这个代码为我非常重要的工作,所以我如何完成它,请帮助我!
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发布于 2020-12-21 12:12:31
self.recent这是要求您通过submit_time 命令,并返回前5结果。
若要执行排序,请参见:https://apidock.com/rails/ActiveRecord/QueryMethods/order
若要执行限制,请参见:https://apidock.com/rails/ActiveRecord/QueryMethods/limit
如果你还困在这个问题上,请给我们看看你试过什么。
<=>如果单击您提供的注释(http://ruby-doc.org/core-2.4.2/Comparable.html)中的链接,则解决方案几乎与该示例相同。
如果你还困在这个问题上,请给我们看看你试过什么。
set_submit_time值得一看:https://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html --理解回调的含义。基本上,只要创建了新记录,这个方法就会被自动调用。(根据相当不言自明的名称:before_create!),您可能已经猜到了这一点。
同样,该页面上的第一个示例几乎与您的场景相同。您可以使用Time.now获取当前时间。
如果你还困在这个问题上,请给我们看看你试过什么。
https://stackoverflow.com/questions/65389089
复制相似问题