【发布时间】:2014-03-17 09:30:51
【问题描述】:
我对 rails first_or_initialize 方法有疑问。我有模型本地化,它有_many OpeningHours。在我的模型本地化中,我有代码:
has_many :opening_hours
accepts_nested_attributes_for :opening_hours, reject_if: proc { |attributes| attributes['from_time'].blank? }, allow_destroy: true
after_initialize :build_opening_hours
def build_opening_hours
if self.new_record?
self.opening_hours.first_or_initialize(day: "monday", from_time: nil, to_time: nil)
self.opening_hours.first_or_initialize(day: "tuesday", from_time: nil, to_time: nil)
end
end
问题是这个 build_opening_hours 方法只用 day: "monday" 初始化对象,第二个用 day: "tuesday" 的对象没有初始化。怎么了?我想不通这是为什么...
【问题讨论】:
-
没人知道答案吗?这对我来说非常重要。请帮忙...
-
您如何验证它是否仅初始化第一个对象,即将日期记录为“星期一”?
-
Mateusz,关联通过
association_id键识别。因此,如果您想获取 resource.opening_hours,您将一无所获,因为您的新资源记录还没有 id。请提供一个模型和你的目标,我会尽力帮助你
标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-3.2