0

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

顺便说一句,我没有使用导轨。我正在使用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
4

1 回答 1

2

id, created_at, and updated_atare going to be nilfor un-persisted objects,这就是你通过调用.new而不保存对象所拥有的。

这些属性将在您调用后立即发送.save(假设没有验证错误)。

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

于 2013-08-18T19:48:25.177 回答