params [: user] - это просто хеш, вы можете создать хеш и объединить его с такими параметрами, как
def create
params[:user].merge(
{
:reputation => 0,
:questions_asked => 0,
:answers_given => 0
...
}
)
@user = User.new(params[:user])
end
Вы можете переместить это в свою модель, если хотите удалить этот код из вашего контроллера, и просто добавить фильтр after_create.
но на самом деле, если просто установить значение 0, установите значения по умолчанию в столбцах базы данных, и вам даже не придется обрабатывать это в вашем коде
create_table "users", :force => true do |t|
t.string "first_name"
t.string "last_name"
t.text "reputation", :default => 0
t.integer "questions_asked", :default => 0
t.integer "answers_given", :default => 0
t.string "request"
t.datetime "created_at"
t.datetime "updated_at"
t.string "email_hash"
t.string "username"
t.string "hashed_password"
t.string "salt"
end
Если вы не можете повторить миграцию, используйте change_column_default, как
class SetDefaultsOnUsers < ActiveRecord::Migration
def self.up
change_column_default "users", "reputation", 0
end
def self.down
change_column_default "users", "reputation", default
end
end