gpt4 book ai didi

Ruby DataMapper 不保存钩子(Hook)前设置的属性

转载 作者:数据小太阳 更新时间:2023-10-29 08:25:01 24 4
gpt4 key购买 nike

class Order
include Datamapper::Resource

property :birthday_day, String
property :birthday_month, String
property :birthday_year, String
property :birthday, Date

before :save do
@birthday = Date.new(@birthday_year.to_i, @birthday_month.to_i, @birthday_day.to_i)
end
end

它是模型的一部分,但已经足够了。当保存字段(来自 irb 或来自 sinatra 应用程序)时:生日不保存在数据库中。但是在 irb 中,我看到对象,其中:生日存在并且它是日期格式。更改现场手册时(来自 irb):f.birthday = Date.new 日期f.保存在对象和数据库中结果出现(在对象中作为日期对象,在数据库中作为“2010-2-3”)

请帮助我理解,模型中之前有什么问题。

对不起,我的英语不好。

最佳答案

您应该使用属性修改器方法。设置 ivar 不会触发脏跟踪。只需这样做:

self.birthday = Date.new(birthday_year.to_i, birthday_month.to_i, birthday_day.to_i)

另外,年月日的属性类型最好使用Integer。

关于Ruby DataMapper 不保存钩子(Hook)前设置的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5472671/

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