sexta-feira, 8 de outubro de 2010

Aprendizado do dia #1

Bom, para me obrigar a postar tentarei manter coisas úteis que acabo aprendendo e que provavelmente daria pra viver sem saber(ou não?).

Imagine que queremos verificar a unicidade de um dado composto no ruby on rails.

id | nome | sobrenome
----|-----------|-------------------
1 | joao | de castro
2 | joao | de góes


Seria permitido o exemplo acima, mas não caso fosse:

id | nome | sobrenome
----|-----------|-------------------
1 | joao | de castro
2 | joao | de castro


Usando-se de:
validates_uniqueness_of :nome, :sobrenome

Estariamos criando uma restrição não somente para nome, mas também para sobrenome, não permitindo que se tenha dois joãos ou dois "da silva", o que não é bem o que queremos.

Para este fim, ao invés de criarmos uma validação customizada, podemos simplesmente utilizarmos:

validates_uniqueness_of :nome, :scope => [:sobrenome]

Caso queiramos criar um dado composto maior, é a mesma regra:

validates_uniqueness_of :coluna1, :scope => [:coluna2, :coluna3, :coluna4]

Espero que tenham algum proveito disso, até mais!

sábado, 26 de junho de 2010

New line no rails em text_area e derivados

Bom, no rails não encontrei -- provavelmente por falha minha -- um método de a apartir de uma entrada, na saída, temos um código em HTML gerado que trate os newlines.

Em application.rb:

helper_method :nl2br
def nl2br(s)
s.gsub(/\n/, '
')
end

Agora pode-se utilizar este método em todo o projeto, ele é uma cópia do tal nl2br do php.

Agora, no controller:

def create
@message = Message.new(params[:message])
@message.thread_id = (params[:id])
@message.text = nl2br @message.text
#mais código aqui...
end

Pronto.