无法获取Active Record的时间戳属性

时间:2013-08-18 19:28:51

标签: ruby sinatra sinatra-activerecord

所以我试图获取我的数据库对象的updated at属性,但它不起作用。我可以获取其他属性,但不能获取updated_atcreated_at属性。我也注意到我也无法获得id属性。似乎我在Pocket.new中未声明的任何内容都不存在。这是我的代码:

顺便说一下,我没有使用rails。我正在使用sinatra-activerecordsinatra

模型

class Pocket < ActiveRecord::Base     
    def retrieve(consumer_key) 
        url = "get/"
        pocket_url = join_url(url)
        # time = Time.now.to_i
        token = self.token
        puts consumer_key
        puts self 
        puts time = self.updated_at  #.to_i this is where it happens.
        options = {
            :access_token => token,
            :consumer_key => consumer_key, 
            :since => (time if defined? time)
        }

        hello = RestClient.post pocket_url, options
        # JSON.parse(hello)
    end

控制器

get '/auth/pocket/callback' do
      […]

      pocket = Pocket.new(token: @token, user: @user)

数据库迁移

class CreatePocket < ActiveRecord::Migration
  def up
    create_table :pockets do |t|
        t.string :user
        t.string :token
        t.timestamps    
    end 
  end

  def down
    drop_table :users
  end
end

1 个答案:

答案 0 :(得分:2)

对于非持久对象,

idcreated_atupdated_at将为nil,这就是您只需调用.new和尚未保存对象。

一旦您致电.save,我们就会发送这些属性(假设没有验证错误)。

实际上并非100%正确。 updated_at不会在第一次创建/保存时设置,但会在后续保存时设置。