Arquivo para 'Rails'

Usando checkboxes em uma relação habtm no Rails

Uma dúvida muito comum entre quem está começando a programar em Rails é como colocar uma série de checkboxes que representam uma relação habtm (has_and_belongs_to_many, ou muitos-para-muitos) entre dois modelos. É sobre isso que vou falar neste artigo. Este exemplo foi executado no Rails 2.1.

Vamos tomar um exemplo simples: Livros e Categorias. Um livro pode estar presente em várias categorias, e uma categoria pode conter diversos livros. Seus models ficam mais ou menos assim:

#Model Livro
has_and_belongs_to_many :categorias

#Model Categoria
has_and_belogns_to_many :livros


Leia o restante do artigo

Novo tutorial de RubyOnRails 2.1

Cada dia que passa eu gosto mais dessa filosofia da “comunidade”. É um ajudando o outro, outro ajudando o um, e como resultado temos materiais de ótima qualidade disponível para quem tiver a fim de aprender alguma coisa por conta própria.

Hoje o Cassio anunciou na rails-br que já está disponível o tutorial de RubyOnRails 2.1, de sua autoria, entitulado “Aprendendo Ruby On Rails“, que foi baseado no famoso e bem conhecido “Rails para sua diversão e Lucro“, do Ronaldo Ferraz.

Sem dúvida vale muito a pena ler o ducumento inteiro, mesmo para quem já usa o framework. Informação nunca é demais!

Bons estudos!

Formatando casas decimais de um número float no Ruby

É incrível como às vezes perdemos tempo tentando resolver problemas tão pequenos. Hoje eu precisava fazer umas divisões com números float, e em alguns casos o resultado era uma dízima periódica. Como esse dado vai para um XML que será exportado para outro sistema, ele impedia o XML de ser validado, exatamente por conter trocentos dígitos após a vírgula. Pois é, essa questão ridícula me tomou muito tempo hoje.

A solução é muito simples: para formatar um float com duas casas decimais no Ruby, utilize:

format("%.2f", 1.3412)

O resultado será: "1.34" (Sim, uma String. Use to_f caso deseje converter novamente para float)

# Edit @ 04/out/08

Conforme comentário do Carlos Brando, existe uma forma ainda melhor de fazer isso:

1.3412.round(2)

Mais importante do que usar uma boa linguagem é ter profissionais competentes ao nosso redor. Valeu, Carlos!

E-book gratuito de RubyOnRails 2

Esta semana escrevi um post falando sobre a tradução de um tutorial que encontrei de RubyOnRails 2.1 para português, e através do comentário do Carlos Brando acabei encontrando o livro que ele escreveu junto com o Marcos Tapajós, cujo título é “RubyOnRails 2.1 – O que há de novo“. O livro é gratuito e tem muitos exemplos bem comentados.

Ainda bem que temos pessoas extremamente competentes que colaboram com a comunidade brasileira, para não ficar na mão dos gringos…

Obrigado, Carlos e Tapajós! (Não comentei no teu blog pq o agradecimento já vai via trackback! ;-) )

Definindo uma instância do Mongrel como serviço no Windows Server

Quando sua aplicação em RubyOnRails estiver pronta para entrar no ar e você quiser colocá-la num servidor com Windows Server (por qualquer motivo, por mais escuso que ele seja), você pode definí-lo como um serviço do sistema. Isso tem diversas vantagens: primeiro porque você não terá que deixar aquela janela do DOS ocupando espaço na barra de tarefas. Outra que você não precisará inciar o serviço manualmente quando o servidor for reiniciado (tá, você pode colocar um arquivo .bat na inicialização, mas … não é melhor método, concorda?). E um último motivo, mas não menos importante, é que você pode deixar que o sistema tome uma atitude caso sua aplicação trave e seja finalizada.


Leia o restante do artigo

Instalando biblioteca do MySQL no Rails

A instalação padrão do Rails vem com uma biblioteca escrita em Ruby para acessar a base de dados MySQL. Se você rodar sua aplicação Rails no Windows com essa biblioteca em Ruby, tudo vai funcionar perfeitamente, mas você vai notar um warning nos seus logs: “WARNING: You're using the Ruby-based MySQL library that ships with Rails. This library is not suited for production. Please install the C-based MySQL library instead (gem install mysql).

O problema é que essa biblioteca é um pouco mais lenta para determinadas operações, por isso não é recomendada para ambientes de produção (mas você pode usá-la normalmente em seu ambiente de desenvolvimento).


Leia o restante do artigo

Instalando o Mongrel no Debian

Esses dias eu escrevi um artigo sobre como instalar o Rails no Debian, e agora vou mostrar como instalar o Mongrel no Debian. O Mongrel é para o Rails o que o Apache é para o PHP, um servidor web que interpreta o código escrito em Ruby.


Leia o restante do artigo

Criando um arquivo no Rails

Quando precisamos criar um arquivo através da nossa aplicação em Rails, geralmente para exportar um conjunto de dados, podemos utilizar a classe File do ruby. E isso é extremamente simples!

Para criar um novo arquivo:

meuArquivo = File.new("nomedoarquivo.txt", "w")

Ao criar uma instência de File, podemos passar os seguintes parâmetros:

- nome do arquivo
- modo (por padrão, somente leitura)
- permissões do arquivo


Leia o restante do artigo

Gerando XML com vários models no Rails

Na semana passada eu escrevi um post sobre como gerar um XML a partir de um modelo no Rails, com algumas opções que facilitam a nossa vida. Mas e quando precisamos gerar um XML que não é formado só com os dados de um único modelo? Será que o to_xml resolve?

A princípio, a resposta é não. Primeiro porque uma vez que você tem uma instância de algum model (por exemplo, User.find(:first)), você não consegue adicionar a ele propriedades que não estão definidas no próprio modelo (ou através de algum método dele). Segundo que se você montar um vetor com modelos diferentes (por exemplo, User e Article), o XML será gerado usando o termo records para designar esse conjunto de objetos e record para designar cada elemento.


Leia o restante do artigo

Gerando um XML a partir de um modelo no Rails

Quando você usa Ruby on Rails e precisa gerar um XML dos dados do banco, temos o método to_xml que faz tudo o que precisamos, com algumas opções que facilitam a nossa vida.

Se você estiver usando to_xml para gerar um XML que vai ser consumido por uma aplicação Flex, pode ter problemas com os campos cujos nomes possuem _ (underline), o que é muito comum, como nos casos dos campos usados para os relacionamentos entre as tabelas, como model_id, por exemplo. Nesse caso, você pode não conseguir acessar essa propriedade no Flex, porque o to_xml transforma todos os underscores em hífens.


Leia o restante do artigo