Rails - Добавить атрибуты не в модели и обновить атрибут модели

У меня есть 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 может быть пустым

РЕДАКТИРОВАТЬ: я обновил свой код

7
задан alex.bour 21 February 2012 в 13:02
поделиться