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.
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.
A melhor opção é o plugin default_value_for:
ResponderExcluirhttp://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