【发布时间】:2019-02-18 23:50:36
【问题描述】:
我有一个模型opening_times,它记录了商店的营业时间。
create_table "opening_times", force: :cascade do |t|
t.string "day"
t.time "morning"
t.time "evening"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.bigint "shop_id"
t.index ["shop_id"]
end
此模型仅通过shops 控制器的edit 操作中的嵌套表单进行更新。我没有opening_times 控制器。
那么基本上我能做的非常有限:update 操作。
虽然我有一个问题:当过去有特定日期的开放时间时,比如说星期二,并且用户想让那一天不工作,用户将两个字段 morning 和 evening 都设为空白。
我可以在数据库中保存空值,但最好实际删除星期二的记录。
然后在模型文件中我设置了这个:
before_save :delete_records_with_missing_hours
private
def delete_records_with_missing_hours
if self.morning.blank? or self.evening.blank?
self.destroy
end
end
但它不起作用。
有没有办法删除打算在模型级别更新的记录?
【问题讨论】:
标签: ruby-on-rails activerecord ruby-on-rails-5 nested-forms