gpt4 book ai didi

ruby-on-rails - 在 Rails 中使用固定装置分配 attr_accessor

转载 作者:行者123 更新时间:2023-11-28 21:13:20 27 4
gpt4 key购买 nike

我有一个简单的 Rails 3 模型,它有一个在数据库中没有字段的 attr_accessor,由于我的初始化设置,我需要使用固定装置来设置它。

但是当我尝试它时,我收到关于未知列的错误。

还有其他方法吗?

我的模型:

class Timeslot < ActiveRecord::Base
attr_accessor :interval
after_initialize :init

def init
self.interval ||= 15
self.start_time ||= Time.local(0, 1, 1)
self.end_time = self.start_time.advance :minutes => self.interval
end
end

最佳答案

fixture 是结束状态。意思是,在调用 attr_accessor 之后,数据库中的内容将被输出。因此,如果您在 @timeslot = timeslots(:your_name_of_fixture) 等测试中使用 end_time,它总是会为您计算。您无需在 Fixture 中担心它们,除非您正在设置它。

现在,我以前没有看到 after_initialize,但我看到它是一个回调函数。对我来说,您是在 View 中设置间隔。可能不是以编程方式(除非那里是默认的 15 分钟)。

切换到 before_save 回调(如果您希望您的人员也能够更改编辑间隔),例如:


class Timeslot < ActiveRecord::Base
attr_accessor :interval
before_save :set_times
def set_times
self.interval ||= 15
self.start_time ||= Time.local(0, 1, 1)
self.end_time = self.start_time.advance minutes: self.interval
end
end

关于ruby-on-rails - 在 Rails 中使用固定装置分配 attr_accessor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13721005/

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