quarta-feira, 8 de dezembro de 2010

Modelos sem tabelas no rails

0

Bah, esse me surgiu esses tempos, e resolvi fazer alguns testes, eu armazeno um objeto em uma sessão com o rails, mas eu não tinha intenção de armazenar essa bagaça na base, somente em memória. sem ideias fui eu pela internet buscar como fazer isso. O Rails 3 modularizou boa parte do rails, um refactoring grande, mas que facilitou muita coisa, como o teste abaixo, por exemplo:

  1. class Person  
  2.   attr_accessor :name:age  
  3. end  

Ta tio, e se quiser usar as validações e outras coisas do rails? vou ter que fazer tudo no braço? Bom é claro que não né, que puta perca de tempo isso. Veja a adaptação abaixo:

  1. class Person  
  2.   include ActiveModel::Validations  
  3.   include ActiveModel::Conversion  
  4.   extend ActiveModel::Naming  
  5.   
  6.   attr_accessor :name:age  
  7.   validates :name:age:presence => true  
  8.   
  9.   def initialize(attributes = {})  
  10.     attributes.each do |name, value|  
  11.       send("#{name}=", value)  
  12.     end  
  13.   end    
  14.     
  15.   def persisted?  
  16.     false  
  17.   end  
  18. end  

vejam só que maravilha, agora vc pode fazer coisas como essas (irb):

  1. p = Person.new  
  2. => #<person:0x7f4516778848>  
  3. p.valid?  
  4. => false  
  5. p.errors  
  6. => #<orderedhash {:age="">["translation missing: br, activemodel, errors, models, person, attributes, age, blank"], :name=>["translation missing: br, activemodel, errors, models, person, attributes, name, blank"]}>  
  7. </orderedhash></person:0x7f4516778848>  

Ooops, falta as traduções, mas isso é dever de casa né ashudahushud.

0 comentários:

 
Design by ThemeShift | Bloggerized by Lasantha - Free Blogger Templates | Best Web Hosting