gpt4 book ai didi

ruby-on-rails - 如何修复此 before_destroy 回调 [rails]

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

我试着写了一个 before_destroy 回调,它应该让用户在出发时间前至少 2 小时取消预订。

这是我到目前为止写的

应用/模型/预订

class Reservation < ActiveRecord::Base 

before_destroy :verify


private
def verify
if !(:ensure_deletable)
record.errors[:base] << 'error'
end
end

def ensure_deletable
if self.date_trip.to_time < Time.now + 2
return true
end
end
end

此代码没有给我任何错误,但它确实允许用户随时取消预订。

你能帮帮我吗?谢谢

编辑:

感谢您的回答,我修改了下面的代码。

class Reservation < ActiveRecord::Base

before_destroy :verify

belongs_to :dep ,:class_name => 'Stop', :foreign_key => 'dep_id'
belongs_to :arr ,:class_name => 'Stop',:foreign_key => 'arr_id'
belongs_to :route
belongs_to :user
delegate :CountStop, :to => :route, prefix: true, :allow_nil => false
delegate :city ,:to => :arr, :allow_nil => false
delegate :city ,:to => :dep, :allow_nil => false



def verify
if ensure_deletable
false
end
end


private
def ensure_deletable
if self.date_trip.to_time < Time.now + 2
return true
end
end


end

通过这种方式,我只能取消至少在出发前两小时的预订。这是正确的吗?

最佳答案

if !(:ensure_deletable) 不会调用您的 ensure_deletable 方法。它检查 symbol :ensure_deletablenil 还是 false。这当然会始终返回 false

要调用您的方法,您必须编写:

if !ensure_deletable
# ...
end

unless ensure_deletable
# ...
end

此外,您可能必须从回调中返回 false 作为 noted by japed .

关于ruby-on-rails - 如何修复此 before_destroy 回调 [rails],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32453242/

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