我需要将时间戳(created_at updated_at)添加到现有表.我尝试了以下代码,但它没有用.我也尝试过我在网上找到的其他解决方案,但它们也不起作用.
class AddTimestampsToUser < ActiveRecord::Migration
def change_table
add_timestamps(:users)
end
end
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我已经做了一些关于如何扩展ActiveRecord:Base类的阅读,所以我的模型会有一些特殊的方法.扩展它的简单方法是什么(逐步教程)?
我需要查询一天内发表的评论.该字段是标准时间戳的一部分,是created_at.所选日期来自date_select.我如何使用ActiveRecord来做到这一点?
我需要像这样的东西:
"SELECT * FROM comments WHERE created_at BETWEEN '2010-02-03 00:00:00' AND '2010-02-03 23:59:59'"
Run Code Online (Sandbox Code Playgroud) 我有一个我获取的事件列表.我正在尝试包括与此事件关联的每个用户以及与每个用户关联的每个配置文件.用户包括但不包括他们的个人资料.
我该怎么做
Event.includes(:users [{profile:}])
Run Code Online (Sandbox Code Playgroud)
文档似乎并不清楚:http: //guides.rubyonrails.org/active_record_querying.html
在哪里可以找到可在rails 3中使用的数据类型列表?(例如文本,字符串,整数,浮点数,日期等?)我会随机了解新的,但我希望有一个我可以轻松参考的列表.
我需要通过ActiveRecord从表中获取随机记录.我从2006年开始跟随Jamis Buck的例子.
但是,我也通过Google搜索遇到了另一种方式(由于新的用户限制,无法使用链接进行归因):
rand_id = rand(Model.count)
rand_record = Model.first(:conditions => ["id >= ?", rand_id])
Run Code Online (Sandbox Code Playgroud)
我很好奇这里的其他人是如何做到的,或者是否有人知道哪种方式会更有效率.
我想知道如何在Rails 4中完成以下操作,或者我是否只使用Rails 3方法来使用lambda,它可以以与4相同的方式传递参数.
我对Rails 3很新,并尝试使用运行Rails 4的一些示例.
这是我的Rails 3代码:
class Person < ActiveRecord::Base
scope :find_lazy, lambda {|id| where(:id => id)}
end
# In console I can call
Person.find_lazy(1)
Run Code Online (Sandbox Code Playgroud)
所以,如果这是Rails 4方式是使用 - > {},那是一个lambda,对吧?scope :all_lazy, -> { select("*") }如果我需要一个论点怎么办?我尝试了一些不同的想法,并在使用 - > {}时在控制台中获得参数错误.
我有一些具有after_save回调的模型.通常这很好,但在某些情况下,比如在创建开发数据时,我想保存模型而不运行回调.有一个简单的方法吗?类似于......的东西
Person#save( :run_callbacks => false )
Run Code Online (Sandbox Code Playgroud)
要么
Person#save_without_callbacks
Run Code Online (Sandbox Code Playgroud)
我查看了Rails文档但没有找到任何内容.但是根据我的经验,Rails文档并不总是讲述整个故事.
UPDATE
我发现了一篇博文,解释了如何从这样的模型中删除回调:
Foo.after_save.clear
Run Code Online (Sandbox Code Playgroud)
我找不到该方法的记录,但似乎有效.
我正在使用Rails3,ActiveRecord
只是想知道如何用OR语句而不是AND来链接范围.
例如
Person.where(:name => "John").where(:lastname => "Smith")
Run Code Online (Sandbox Code Playgroud)
这通常会返回name ='John'和lastname ='Smith',但我想:
name ='John'或lastname ='Smith'
activerecord ruby-on-rails ruby-on-rails-3 rails-activerecord
在我看来,application.rb我发现了以下评论
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
config.time_zone = 'Eastern Time (US & Canada)'
Run Code Online (Sandbox Code Playgroud)
从上面看,我已经config.time_zone到了EST时间.但是,仍然在DB中创建记录时,它看起来像是datetime以UTC格式存储.
他们说,在上面的评论中
...并使Active Record自动转换为此区域...
我怎么能这样做,在哪里?
此外,我将在heroku上部署这个,我希望设置继续