尝试手动设置created_at日期:
entry = Entry.new
entry.text = tweet['text']
entry.source = 'tweet'
entry.user_id = user.id
entry.latitude = coords[1]
entry.longitude = coords[0]
entry.created_at = Chromium(tweet.created_at)
收到以下错误:
undefined method `created_at' for #<Hash:0x1036af910>
我该如何避免这种情况?我想保留created_at的默认功能,因为并非所有条目都以这种方式输入。
答案 0 :(得分:3)
您的问题不在于ActiveRecord对象的created_at方法。
我认为这里出现错误的是实际上created_at
对象上调用的tweet
方法。
见上文 - 你使用
entry.text = tweet['text']
(tweet
是哈希)...但是
entry.created_at = Chromium(tweet.created_at)
抱怨Hash没有名为created_at
undefined method `created_at' for #<Hash:0x1036af910>
答案 1 :(得分:3)
这里的问题是created_at
对象上没有tweet
方法,这是一个哈希。你可能意味着
entry.created_at = Chromium(tweet['created_at'])
但是,当第一次保存对象时,Rails将覆盖created_at
属性。这是一个非常固定的行为,你将无法覆盖它而不会弄乱其他东西。
最好创建一个新的日期时间列,例如tweeted_at
并使用它。