gpt4 book ai didi

ruby-on-rails - 更新模型新记录的方法

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:32 24 4
gpt4 key购买 nike

我有一个名为 UserPrice 的模型,它有一个表单,您可以在其中一次创建多个 UserPrice。我有一个名为 :all_dates 的虚拟属性,它应该更新我的 UserPrice 模型的另一个 date_select 字段,名为 :purchase_date 但因为它不是正确地完成它的工作我需要在这里详细解释这个方法,这样我才能让它工作:

def save_all_dates_to_user_prices
if !self.all_dates.nil?
self.user_prices.each {|up| up.purchase_date = self.all_dates if up.new_record?}
end
end

我会开始:

  1. 我定义了方法 save_all_dates_to_user_prices 发生before_save 在我的 UserPrice 模型中。

  2. if !self.all_dates.nil? 表示正在检查 UserPrice.all_dates 属性是否为空(nil?)。

这是我迷路的地方;不确定这一行:

self.user_prices.each {|up| up.purchase_date = self.all_dates if up.new_record?}
  • 它包装了每个 UserPrice.user_prices?如果我试图获得一组新记录,它看起来不会像这样吗?
  • 为什么要用|up|,是self.user_prices.each的意思吗?
  • self.user_prices.each = {}(哈希)中包含的任何内容?

除了回答我上面的问题,有人可以为我填写/更正有关此方法的详细信息吗?

谢谢,我是 Rails 和 Ruby 的新手,我想边写代码边学习。

最佳答案

eachEnumerable 的一个方法Array 和 Hash 都实现的类。它以一个 block 作为参数并将其简单地应用于 Enumerable 的所有元素。所以你问的那行翻译成这样:

对于每个 user_prices,将 all_dates 分配给 purchase_date(如果它是新的 user_price)

up 只是一个引用当前 Enumerale 元素的变量。

这是一个 good explanation of closures in ruby .

关于ruby-on-rails - 更新模型新记录的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com