Я пытаюсь сделать следующее в моей модели Rails 3:
require 'securerandom'
class Contest < ActiveRecord::Base
attr_accessor :key
before_create :generate_key
private
def generate_key
self.key = SecureRandom.hex(3)
end
end
Однако, когда я создаю Конкурс, все поля в моей таблице кажутся правильными, кроме ключа, который остается нулевым в моей БД.
Подробнее:
В моем журнале сервера rails я вижу следующее, когда создаю конкурс через мою "форму создания конкурса"
SQL (0.5ms) INSERT INTO "contests" ("category", "created_at", "description", "key", "price", "status", "time", "title", "updated_at", "user_id") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [["category", "camisas"], ["created_at", Wed, 15 Feb 2012 18:57:16 UTC +00:00], ["description", "test_description"], ["key", nil], ["price", 111], ["status", "In process"], ["time", "2sem"], ["title", "test_contest"], ["updated_at", Wed, 15 Feb 2012 18:57:16 UTC +00:00], ["user_id", 5]]
Обратите внимание на ["ключ", ноль]
Но это должно быть правильно, верно? Я предполагаю, что ключ будет добавлен обратным вызовом Contest.rb: before_create?
Может, я скучаю по SecureRandom?