Rails - Ajouter des attributs pas dans le modèle et le modèle de mise à jour de l'attribut

J'ai 3 champs dans mon formulaire sorcière ne sont pas dans ma base de données: opening_type, opening_hours, opening_minutes. Je veux mettre à jour l'attribut principal de "l'ouverture" (base de données) avec ces 3 champs.

J'ai essayé beaucoup de choses qui ne fonctionnent pas.

En fait, j'ai:

  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

J'ai essayé d'ajouter quelque chose comme:

  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

Mais, les accesseurs méthodes ne sont pas appelé et je pense que opening_type, opening_hours, opening_minutes ont été vide trop si les accesseurs ont été appelés...

Je pense que je n'ai pas besoin d'un before_save de rappel et devrait faire de cette réécriture de l'accesseurs.

Notes:
- Rails 3.0.5,
- opening_type, :opening_hours, :opening_minutes pourrait être vide

EDIT: j'ai mis à jour mon code

OriginalL'auteur alex.bour | 2012-02-21