quinta-feira, 11 de março de 2010

Rails e valores padrão em modelos

Esta tarefa certamente é bem fácil para quem já é experiente, mas confesso que ralei um pouco para conseguir concluí-la. Achei vários posts, mostrando várias formas diferentes, mas só consegui o resultado que queria depois de executar vários testes.

O que precisava era o seguinte:

Eu tenho o modelo Content, que contém os dados básicos do conteúdo (id, name, body,...) e o estendo para formar um post de blog, por exemplo. Há um campo, chamado content_type_id, que deve conter o ID do tipo de conteúdo em questão.

O problema era justamente este: Definir content_type_id como 4 (tipo de conteúdo blog) na inicialização do modelo.

A solução que implementei foi:

class Blog < ActiveRecord::Base
 
  def initialize
    super(:campo => 'valor')
  end

end

Está funcionando como preciso que funcione, mas não tenho ainda certeza se esta é a forma indicada de se fazer.

Um comentário:

  1. A melhor opção é o plugin default_value_for:

    http://github.com/FooBarWidget/default_value_for

    Uso:

    class User < ActiveRecord::Base
    default_value_for :name, "(no name)"
    default_value_for :last_seen do
    Time.now
    end
    end

    u = User.new
    u.name # => "(no name)"
    u.last_seen # => Mon Sep 22 17:28:38 +0200 2008

    Mais fácil que isto, só dois disto.
    :-D

    ResponderExcluir