Cela fonctionne sur les Rails 2.3.x et de Rails 3.0.x!
Sur une action nouvelle dans le contrôleur, la case à cocher est définie sur true.
# in the controller
def new
@user = Person.find(:first)
@user.active = true
end
En la forme: la case est cochée sur la création (par appel de nouveau), mais si la validation échoue, la case n'est pas défini avec la valeur que l'utilisateur a la poste.
# in the view
<%= form_for ..... |f| %>
...
<%= f.check_box :active %>
...
<% end %>
Une autre façon, mais pas très bon (si vous voulez changer la logique que vous avez à faire une nouvelle migration) est à définir :par défaut => 1 dans la migration du modèle et de l'attribut.
class CreatePeople < ActiveRecord::Migration
def self.up
create_table :people do |t|
...
t.boolean :active, :null => false,
:default => 1
t.timestamps
end
end
def self.down
drop_table :people
end
end