Vous reprendrez bien un peu de sucre?

Publié par Simon le janvier 30, 2007

Liste non exhaustive de quelques pépites trouvées dans les changelogs de Rails 1.2.

  • ActiveRecord.find() accepte le passage des conditions par table de hashage (avec support de nil et Array)
    Post.find(:all, :conditions => { :topic_id => [1, 2, 3], :last_read => nil }
    # => SELECT * FROM posts WHERE topic_id in (1,2,3) AND last_read IS NULL
    
  • has_many :through supporte <<
     class Post < ActiveRecord::Base
       has_many :taggings
       has_many :tags, :through => :taggings
     end
     post.tags << Tag.find_by_name('old')
     post.tags.create! :name => ‘general’
    
  • validates_uniqueness_of peut tester la casse ou pas.
      class Account < ActiveRecord::Base
        validates_uniqueness_of :email, :case_sensitive => false
      end
    
  • Tester l’existence d’un enregistrement dans un modèle avec ActiveRecord::Base.exist?()
    Post.exists? 1
    Post.exists? :topic_id => 3
    Post.exists? "topic_id = 1""
    
  • Obtenir une date/heure au format SQL (courtesy of Bruce Williams)
    2.weeks.from_now.to_s(:db)
    # => "2007-02-13 21:46:28"
    
  • Utilisation de link_to_function() avec un bloc pour avoir du Javascript sans en écrire une seule ligne
    link_to_function("Hider", :class => "hider_link") { |p| p[:something].hide }
  • assert_select fait maintenant partie de ActionPack et remplace avantageusement assert_tag. En plus il permet de tester les RJS via assert_select_rjs.
  • Ajout de la méthode sum() au module Enumerable
    payments.sum(&:price) # au lieu payments.inject{ |sum,p| sum + p.price}
    payments.sum { |p| p.price * p.tax_rate }
    [1, 2, 3].sum # => 6
    
  • assert_response comprend les status codes symbolisés
    assert_response :not_found # au lieu de assert_response 404
  • Instances app et helper accessibles depuis la console
    $ script/console
    Loading development environment.
    >> app.get "/posts/1"
    => 200
    >> helper.options_for_select([%w(a 1), %w(b 2), %w(c 3)])
    => "<option value=\"1\">a</option>n<option value=\"2\">b</option>n<option value=\"3\">c</option>"
    
Rétroliens

Utilise ce lien depuis ton site.

Commentaires

Tu dois être logué pour laisser une réponse.