У меня есть 3 поля в моей форме, которых нет в моей базе данных: Opening_type, Opening_hours, Opening_minutes. Я хочу обновить основной атрибут «открытие» (в базе данных) этими тремя полями.
Я пробовал много вещей, которые не работали.
На самом деле у меня:
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
Но методы доступа не вызываются, и я думаю, что open_type, Opening_hours, Opening_minutes тоже были пустыми, если были вызваны методы доступа ...
Я думаю, мне не нужен обратный вызов before_save, и я должен перезаписать аксессоры.
Примечания: - Рельсы 3.0.5, - open_type,: open_hours,: open_minutes может быть пустым
РЕДАКТИРОВАТЬ: я обновил свой код