Sunday 15 July 2012

callback - Set default value for field using model method in rails 3 -



callback - Set default value for field using model method in rails 3 -

i have table called enrollments , have column on table called last_taken :datetime. using rails 3.2

i had constraint on database set field time.now of course of study set default time of migration. want set default value in model. looking on site solution seems callback, have tried in several forms. not working:

after_initialize :set_last_taken def set_last_taken self.last_taken ||= time.zone.now end

no matter callback utilize (i.e. before_create, before_save) value of nil when create field in console without setting field. console shows like:

1.9.3p194 :052 > enrollment.create(user_id: 22, course_id: 8) (0.3ms) begin enrollment exists (0.7ms) select 1 1 "enrollments" ("enrollments"."user_id" = 22 , "enrollments"."course_id" = 8) limit 1 sql (1.1ms) insert "enrollments" ("course_id", "created_at", "last_taken", "role", "updated_at", "user_id") values ($1, $2, $3, $4, $5, $6) returning "id" [["course_id", 8], ["created_at", sat, 11 oct 2014 14:56:53 eest +03:00], ["last_taken", nil], ["role", "user"], ["updated_at", sat, 11 oct 2014 14:56:53 eest +03:00], ["user_id", 22]] (0.8ms) commit => #<enrollment id: 108, user_id: 22, course_id: 8, created_at: "2014-10-11 11:56:53", updated_at: "2014-10-11 11:56:53", role: "user", last_taken: nil>

after_initialize should work. please write on after initialize method , check output.

after_initialize :set_last_taken def set_last_taken logger.debug("@@@@ - after initialize called") end

please check database column type , attr_accessible field.

model callback ruby-on-rails-3.2 rails-activerecord

No comments:

Post a Comment