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