2014-05-12 3 views
0

에 대한 등록 정보를 저장하지 않는 Datamapper 클래스는 다음과 같이 정의 :Datamapper, SQLite는이 데이터베이스

~ (0.024280) 표 "임시 직원을"CREATE :이 구문 SQLite는에 테이블을 생성

require 'rubygems' 
require 'data_mapper' 
require 'dm-core' 

DataMapper::Logger.new($stdout, :debug) 
DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/db/eventdb.sqlite") 

class Temp 
    include DataMapper::Resource 
    Event.raise_on_save_failure = true 

    property :id, Serial 
    property :temp1, String, :length => 50 
    property :temp2, String 
    property :temp3, String 
    property :created_at, Time 
    property :updated_at, Time 

    attr_accessor :temp1, :temp2, :temp3 

    class << self 

    end 

end 

VARCHAR (50), "temp3"VARCHAR (50), "created_at"TIMESTAMP, "updated_at"TIMESTAMP)

아직 정수가 아닌 정수가 아니라면, 이 코드를 실행하면 타임 스탬프 항목 이외의 빈 값을 가진 insert 문이 생성됩니다.

irb(main):001:0> @t = Temp.new 
=> #<Temp @id=nil @temp1=nil @temp2=nil @temp3=nil @created_at=nil @updated_at=nil> 
irb(main):002:0> @t.temp1 = "Test1" 
=> "Test1" 
irb(main):003:0> @t.dirty? 
=> true 
irb(main):004:0> @t.save 
~ (0.002224) INSERT INTO "temps" ("created_at", "updated_at") VALUES ('2014-05 12T19:26:15.640051-04:00', '2014-05-12T19:26:15.639557-04:00') 
=> true 

내 속성 (이 경우 temp1이 데이터베이스에 저장되지 않는 이유)에 대한 의견이 있으십니까? 미리 감사드립니다.

답변

0

제거이 라인 : attr_accessor :temp1, :temp2, :temp3

그것은 아마도 Datamapper의 setter를 재정의합니다.

+0

감사합니다. 속성을 읽기/쓰기 가능하게 만들려면 attr_accessor가 필요하다고 생각했습니다. 다시 한번 감사드립니다. – jmtdev

+0

나의 대답이 당신의 문제를 해결했다면 당신은 대답의 왼쪽에있는 녹색 진드기로 그것을 받아 들여야합니다. – ujifgc