Странная нулевая ошибка.
У меня есть сценарий рейка / lib / task, который отказывается устанавливать строковое значение, когда я запускаю его, rake сообщает об этом выводе / ошибке:
Покупка
Покупка
PGError: ОШИБКА: нулевое значение в столбце "тип" нарушает ненулевое ограничение: INSERT INTO "account_logs" ("сумма", "тип", "тип пользователя", "транзакция_id","commited", "user_id", "creation_at", "updated_at") ЗНАЧЕНИЯ (168.0, NULL, 'Public', 452921, 't', 10146, '2011-07-29 09: 57: 11.514472', '2011-08-02 15: 33: 38.479838 ') ВОЗВРАЩЕНИЕ "id" C: /Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.7/lib/active_record/connect ion_adapters / abstract_adapter.rb: 207:в `rescue in log '
Что очень и очень странно, поскольку я фактически установил значение, которое явно не равно NULL.Как получилось ???
Мой код такой:
m_sum = Float(rand_int(1,500))
m_type = "Purchase"
puts m_type
m_user_info = UserInfo.order("RANDOM()").first
m_usertype = m_user_info.usertype
m_transactionid=gid
m_commited=true
m_user_id=rand_int(1,User.count)
m_created_at=rand_time(1.week.ago,Time.now)
m_updated_at=Time.now
if m_type.nil?
puts "What the f"
end
puts m_type
AccountLog.create(
:sum => m_sum,
:type => m_type,
:usertype => m_usertype,
:game => m_game,
:transactionid => m_transactionid,
:commited => m_commited,
:user_id => m_user_id,
:created_at => m_created_at,
:updated_at => m_updated_at
)
#part of schema.rb
create_table "accountlogs", :force => true do |t|
t.decimal "sum", :precision => 15, :scale => 10, :null => false
t.string "type", :limit => 30, :null => false
t.string "usertype", :limit => 30, :null => false
t.integer "transactionid", :limit => 8, :null => false
t.boolean "commited", :null => false
t.integer "user_id", :limit => 8, :null => false
t.datetime "created_at"
t.datetime "updated_at"
end
#Model
class AccountLog < ActiveRecord::Base
belongs_to :user
end