Tag: activerecord

存储星期几和时间?

我有一个关于在数据库中存储星期和时间的两部分问题。 我正在使用Rails 4.0,Ruby 2.0.0和Postgres。 我有某些事件,这些事件都有一个时间表。 例如,对于“Skydiving”活动,我可能有周二,周三和下午3点。 我有办法将星期二和星期三的记录存储在一行中,还是应该有两条记录? 存储日期和时间的最佳方式是什么? 有没有办法存储星期和时间(不是日期时间)或者这些应该是单独的列? 如果它们应该分开,我将如何存储一周中的哪一天? 我想将它们存储为整数值,0表示星期日,1表示星期一,因为这就是Time类的wday方法。 任何建议都会非常有用。

使用RVM使用sinatra app加载Active Record gem时出错

我为我开始的sinatra应用程序设置了一个项目级别的RVM gemset,它将连接到具有Active Record的本地数据库。 为了测试它我尝试运行以下测试应用程序: test.rb require ‘rubygems’ # may not be needed, depending on platform require ‘sinatra’ require ‘activerecord’ class Article “sqlite3”, :database => “hw.db” ) Test.first.content end (摘自这个问题的答案: 使用Sinatra时,与数据库通信的最佳方式是什么? ) 当我运行ruby -rubygems test.rb此错误: /Users/[user]/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require’: cannot load such file — activerecord (LoadError) 我已经安装了Active Record gem,它显示在gem list , rvm current显示正确的gemset。 我是RVM的新手,我认为这与它没有正确的加载路径有关,但我觉得我已经正确设置了所有内容,所以我很欣赏有关错误的建议。 谢谢。

ActiveRecord连接警告。 (数据库连接不会自动关闭)

我正在尝试用Sinatra和ActiveRecord创建一个小应用程序(3.2.3)。 这是我的主文件的样子: require “sinatra” require “sinatra/reloader” require “active_record” … ActiveRecord::Base.establish_connection( adapter: ‘sqlite3’, database: ‘db.sqlite3’, host: ‘localhost’, ) class Post < ActiveRecord::Base … end get('/') { … } get('/posts') { … } … 它有效,但有时我会在控制台中收到警告: 弃用警告:数据库连接不会自动关闭,请通过在连接上调用close线程末尾的数据库连接。 例如:ActiveRecord :: Base.connection.close’ 发生警告时,页面刷新需要很长时间。 我不明白我应该在哪里关闭连接。 我试图将ActiveRecord::Base.connection.close放在文件的底部,但它没有帮助。 更新: 我忘了提到我也使用来自sinatra-contrib gem的sinatra / reloader插件来查看效果而无需重启服务器。 require “sinatra/reloader” 如果我发表评论,那么问题就会消失。 但无论如何,我想知道如何在不禁用重新加载器的情况下解决问题。

rails Active Record中的attr_accessible

当我使用attr_accessible指定我的模型I中的哪些字段将公开时,脚本/控制台也是如此? 我的意思是我没有指定的东西因为attr_accessible也不能通过控制台访问?

的ActiveRecord :: ConnectionTimeoutError

我收到此错误: ‘could not obtain a database connection within 5 seconds (waited 5.001017 seconds). The max pool size is currently 16; consider increasing it.’ 首先我得到了这个错误,我将计数从5提升到16.但它仍然在发生,我是唯一一个测试数据库的人。 当我是唯一的用户时,为什么会这样? 我不在铁轨上。 我在用: ActiveRecord::Base.establish_connection ({ :adapter => ‘mysql2’, :database => ‘ck’, :host => ‘localhost’, :username => ‘root’, :password => ”, :pool => 16, }) 并使用Sinatra。 谢谢

如何使用ActiveRecord按作业数量对作者进行排序?

假设我有Book模型和Author模型。 我想列出按书数排序的所有作者。 最好的方法是什么? 我知道如何在SQL中执行此操作,方法是使用嵌套选择或使用某些连接执行。 但我想知道的是如何使用ActiveRecord很好地完成这项工作。

如何遍历MySQL结果集?

这是我正在使用的代码: # Run the query against the database defined in .yml file. # This is a Mysql::result object – http://www.tmtm.org/en/mysql/ruby/ @results = ActiveRecord::Base.connection.execute(@sql_query) 在我的视图中,这是我看到的值: Outputs: # Outputs: [“asdfasdf”, 23, “qwefqwef”] [“sdfgdsf”, 23, “asdfasdfasdf”] 因此,想象一下我select * from Person查询类似select * from Person ,并返回结果集,例如: ID Name Age 1 Sergio 22 2 Lazlow 28 3 Zeus 47 如何迭代每个值并输出它? 这里的文档没有用,因为我已经尝试过可能存在的方法,但是解释器给出了一个错误,说明这些方法不存在。 […]

为什么alias_method在Rails模型中失败

class Country < ActiveRecord::Base #alias_method :name, :langEN # here fails #alias_method :name=, :langEN= #attr_accessible :name def name; langEN end # here works end 在第一次调用alias_method失败时: NameError: undefined method `langEN’ for class `Country’ 我的意思是当我做例如Country.first时它失败了。 但是在控制台中我可以成功调用Country.first.langEN ,并看到第二个调用也可以。 我错过了什么?

黑客ActiveRecord:添加全局命名范围

我试图为ActiveRecord模型提供一组非常通用的命名范围,如下所示: module Scopes def self.included(base) base.class_eval do named_scope :not_older_than, lambda {|interval| {:conditions => [“#{table_name}.created_at >= ?”, interval.ago] } end end end ActiveRecord::Base.send(:include, Scopes) class User < ActiveRecord::Base end 如果命名范围应该是通用的,我们需要指定* table_name *以防止命名问题,如果它们是来自其他链式命名范围的连接。 问题是我们无法获取table_name,因为它在ActiveRecord :: Base上调用,而不是在User上调用。 User.not_older_than(1.week) NoMethodError: undefined method `abstract_class?’ for Object:Class from /var/lib/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:2207:in `class_of_active_record_descendant’ from /var/lib/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:1462:in `base_class’ from /var/lib/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:1138:in `reset_table_name’ from /var/lib/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:1134:in `table_name’ from /home/bogdan/makabu/railsware/startwire/repository/lib/core_ext/active_record/base.rb:15:in […]

Rails3:将范围与OR结合

我需要将名称范围与运算符组合……类似于: class Product < ActiveRecord::Base belongs_to :client scope :name_a, where("products.name = 'a'") scope :client_b, joins(:client).where("clients.name = 'b'") scope :name_a_or_b, name_a.or(client_b) end 谢谢