2014-10-20 95 views
2

我在保存數據庫中的字符串時遇到問題。整數進展順利。我有一個模型Payment與一個字段:命令(字符串)。這是從控制檯:Sinatra + SQLite + ActiveRecord(字符串無法保存)

p = Payment.new 
p.command = 'test' 
=> "test" 
p.save 
=> D, [2014-10-20T15:30:43.383504 #2229] DEBUG -- : (0.2ms) begin transaction 
=> D, [2014-10-20T15:30:43.386985 #2229] DEBUG -- : (0.1ms) commit transaction 
=> true 
Payment.last 
=> #<Payment id: 1, command: nil> 

我的應用程序文件

require 'sinatra' 
require 'activerecord' 
require 'sinatra/activerecord' 

set :database, 'sqlite3:qiwi_exline_development.sqlite3' 

get '/' do 
    @payments = Payment.all 
    haml :index 
end 

class Payment < ActiveRecord::Base 
    include ActiveModel::Model 

    attr_accessor :command 
end 

我的模式

ActiveRecord::Schema.define(version: 20141020092721) do 

    create_table "payments", force: true do |t| 
    t.string "command" 
    end 

end 

有趣的時刻:如果我更改字符串模式到整數 - >整數值保存沒有任何問題。

+2

從模型中刪除'attr_accessor'。對於'ActiveRecord'模型,getter和setter已經由'ActiveRecord'爲您的數據列生成。 'attr_accessor'不是必需的。 'attr_accessor' - 是控制'ActiveRecord'模型中批量分配的不贊成使用的方法。 – 2014-10-20 10:26:27

+0

謝謝,問題太簡單了!請將您的評論作爲答案,以便我可以將其標記爲正確。 – 2014-10-20 12:02:38

回答

1

從型號中刪除attr_accessor。對於ActiveRecord模型,您的數據列已經由ActiveRecord生成了獲取者和設置者。不需要attr_accessorattr_accessor - 是在ActiveRecord模型中控制質量分配的棄用方法。

相關問題