【发布时间】:2012-02-21 11:26:55
【问题描述】:
我的表单中有 3 个字段不在我的数据库中:opening_type、opening_hours、opening_minutes。我想用这 3 个字段更新主要属性“opening”(在数据库中)。
我尝试了很多不起作用的东西。
其实我有:
attr_accessor :opening_type, :opening_hours, :opening_minutes
def opening_type=(opening_type)
end
def opening_type
opening_type = opening.split("-")[0] if !opening.blank?
end
def opening_hours=(opening_hours)
end
def opening_hours
opening_hours = opening.split("-")[1] if !opening.blank?
end
def opening_minutes=(opening_minutes)
end
def opening_minutes
opening_minutes = opening.split("-")[2] if !opening.blank?
end
我尝试添加类似:
def opening=(opening)
logger.info "WRITE"
if !opening_type.blank? and !opening_hours.blank? and opening_minutes.blank?
opening = ""
opening << opening_type if !opening_type.blank?
opening << "-"
opening << opening_hours if !opening_hours.blank?
opening << "-"
opening << opening_minutes if !opening_minutes.blank?
end
write_attribute(:opening, opening)
end
def opening
read_attribute(:opening)
end
但是,没有调用访问器方法,我认为如果调用访问器,opening_type、opening_hours、opening_minutes 也是空的......
我认为我不需要 before_save 回调,应该重写访问器。
注意事项: - 轨道 3.0.5, - opening_type, :opening_hours, :opening_minutes 可以为空
编辑:我更新了我的代码
【问题讨论】: