Это работает на Rails 2.3.x и Rails 3.0.x!
При действии, новом в контроллере, флажок установлен в true.
# in the controller
def new
@user = Person.find(:first)
@user.active = true
end
В форме: флажок установлен при создании (вызовом new), но если проверка не пройдена, флажок остается установленным со значением, опубликованным пользователем.
# in the view
<%= form_for ..... |f| %>
...
<%= f.check_box :active %>
...
<% end %>
Другой способ, , но не очень хороший (если вы хотите изменить логику, которую вы должны выполнить новую миграцию), это установить : default => 1 в миграции данной модели и атрибута.
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