gpt4 book ai didi

ruby-on-rails - Rails 不允许我提前 30 天以上设置 'date' 字段 - 帮助 - Rails 3.0

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

在我的 User 模型上,我有一个属性 trial_end_date

表中的列如下所示:

#  trial_end_date       :date

但是,如果我尝试将日期更改为遥远的将来,在 Rails 控制台中,会发生以下情况:

a = User.find(2)
a.trial_end_date = "2019-12-30"
=> "2019-12-30"
>> a.save
=> true
>> a.trial_end_date
=> Sat, 19 Nov 2011

WTF?为什么要这样做?我不知道为什么会这样?

即使我尝试 update_attributes(:trial_end_date => "2019-12-30") 也会发生同样的事情。

以下是我的 User 模型中与 trial_end_date 相关的所有方法:

after_validation :set_trial_end

def has_trial_expired?
if (self.trial_end_date <= Date.today)
return true
else
return false
end
end

def set_trial_end
plan = self.plan
end_of_trial = Date.today + self.plan.trial_duration.days
self.trial_end_date = end_of_trial.to_date
end

def trial_will_almost_end?
if (self.trial_end_date - Date.today <= 3)
return true
else
return false
end
end

def when_does_trial_end?
self.trial_end_date
end

最佳答案

马卡米利安,

您评论说您认为验证会“仅在初始用户创建时”发生。正如评论所指出的那样,如果您使用 after_validation 则不正确,但如果您使用

before_validation_on_create

(参见,例如,http://ar.rubyonrails.org/classes/ActiveRecord/Callbacks.html)

使用它会限制您的用户创建日期,但不会阻止您(或他们!小心!)以后以其他方式更改它们。

关于ruby-on-rails - Rails 不允许我提前 30 天以上设置 'date' 字段 - 帮助 - Rails 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7844739/

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