Tag: activerecord

在Rails 3中禁用BLOB日志记录

有没有办法在记录的SQL查询中禁用/截断BLOB字段? 当我插入或更新其中包含BLOB字段的记录时,Rails记录器会打印这些字段的内容,这非常烦人。 我找到了一些解决方案,但它们都不适用于Rails 3。

没有为关联的集合对象调用Rails 3.0.10 before_validation回调

我有一个名为Parent的对象has_many Child对象: has_many :children accepts_nested_attributes_for :children, :allow_destroy => true Child包含一个指定:before_validation回调的模块: def self.included base base.class_eval do before_validation :my_callback end end protected def my_callback logger.debug “see me!” end 我注意到在为子项创建Parent和嵌套属性时,不会为每个Child调用:before_validation回调。 这是预期的行为吗? 我尝试过做一个before_save回调,看起来效果很好。 这是在Rails 3.0.10上。 谢谢!

组主动记录关系

在桌面上选择后,我得到一个结果: [#, # […] 如何对url分组并保留key_id ,例如: [“http://www.url.com/1”, [1, 2]]=>2 谢谢

Rails:两个’where’查询 – 每个查询单独工作,但不能一起工作

我想写一些类似的东西: @meeting_requests = Meeting.where(‘meeting_time >= ? AND requestee_id IS ? AND status = ?’, Date.today, nil, “Active”) .joins(:requestor) .where(‘birthyear >= ? AND birthyear <= ?', current_user.birthyear – 10, current_user.birthyear + 10 ) 这有效: @meeting_requests = Meeting.where(‘meeting_time >= ? AND requestee_id IS ? AND status = ?’, Date.today, nil, “Active”) 这有效: @meeting_requests = Meeting.joins(:requestor) .where(‘birthyear >= […]

ruby on rails 3使用缓存数据重新加载

在我的应用程序中使用activerecord reload命令似乎在调用时使用缓存数据。 我可以通过执行以下操作在调试器中进行复制。 u = User.find(1) u.first_name #outputs bob # manually change first_name for record 1 to jim with PGadmin or with rails console u.reload u.valid? #outputs true u.first_name #outputs bob #if i do this again u = User.find(1) #old data again u.first_name #outputs bob #if i load data this way u = User.where(‘id = […]

是否可以直接在ActiveRecord / Rails中按小时/分钟/小时分组?

我希望按小时/天分组我的数据,甚至可能分到四分之一小时。 我可以直接在ActiveRecord中执行此操作,还是应该抓取所有数据并手动执行聚合? Table “Checkin”: Time NumBikes ChangeBikes 09:00 5 5 09:05 6 1 09:10 10 4 10:00 6 4 10:05 8 2 10:10 16 8 Looking to get something like: Time Sum(ChangeBikes) 09:00 10 10:00 14 谢谢,克里斯。

Rails在单个表单上更新多个模型

我正在编写一个使用formtastic来管理BusinessUnit模型的表单,但是在创建新的BusinessUnit时,它还必须创建许多其他记录类型。 模型之间的关联如下: class BusinessUnit < ActiveRecord::Base has_many :business_unit_sites has_many :locations class BusinessUnitSite < ActiveRecord::Base belongs_to :site belongs_to :business_unit class Site < ActiveRecord::Base has_many :locations has_many :business_unit_sites class Location < ActiveRecord::Base belongs_to :business_unit belongs_to :site 创建BusinessUnit时,还必须使用BusinessUnitSite作为连接表创建站点。 此外,应创建一个位置记录,该记录必须保存新站点记录的外键,这是我遇到问题的地方。 我可以使用嵌套表单创建一个新位置(如下所示),但必须手动创建站点。 false %> false %> “Location Name” %> 创建位置,站点记录并确保Location保存新创建的站点的外键的最佳方法是什么?

自动更改postRails的状态

在我的rails应用程序中,我有一个工作模型,我希望状态在管理员批准30天后自动更改为“已存档”这可能吗? 如果是这样的话怎么办?

使用具有has_many关系的复选框

我有一些行发票。 一行只能属于一张发票。 这就是我的架构的样子: create_table “invoices” do |t| end create_table “lines” do |t| t.integer “invoice_id” end 我的模特: class Invoice < ActiveRecord::Base has_many :lines end class Line < ActiveRecord::Base belongs_to :invoice end 现在,在创建(或编辑)发票时,我想显示一个包含所有可能行的列表(数据库中已存在这些行),并且每行都有一个复选框,用于将其与发票链接。 我看了一下HABTM问题,但我认为这不是我需要的,问题并不复杂。 我认为问题是我想在发票时更新Unit#invoice_id。 我可以使用嵌套表单执行此操作,还是需要在此处使用before_save回调? 谢谢!

使用RSPEC进行测试时突然出现无法解释的活动记录连接超时

这是我几乎一无所知的地方,所以请提前道歉。 我有一套超过800个rspec测试。 在运行整个集合或仅仅是特定的测试文件时突然而且莫名其妙地,在这些之后(例如20个左右,虽然它们的数字从不完全相同),每个单独的测试都会以相同的错误开始失败: Failure/Error: Unable to find matching line from backtrace ActiveRecord::ConnectionTimeoutError: could not obtain a database connection within 5.000 seconds (waited 5.000 seconds) 在典型的运行中,我会在20次左右的请求测试后开始收到这些错误,其余的780+测试都会因上述完全相同的错误而失败。 我已经尝试回到之前测试完美的先前git提交和分支。 没有运气 – 仍有780多个失败。 还完全删除了重新创建的测试数据库。 也没有运气。 我已经阅读了许多关于连接池等的线程,但我恐怕我不知道如何诊断甚至发生了什么。 以下是我现在所知道的事实: 使用Postgresql 据我所知,开发环境运行良好 在一切工作正常和现在之间,我没有对我所知道的环境进行任何更改/升级。 甚至没有任何数据库迁移。 只需更改模型,视图和控制器代码。 正如我所提到的,回到之前的提交并没有解决任何问题。 config.use_transactional_fixtures = false因为我正在通过Selenium测试ajaxfunction。 但是,无论Selenium是否用于特定的测试集,测试都会失败。 即使我只运行不使用Selenium的测试,在20次左右的测试后仍然会出现故障。 我正在使用具有以下配置的Database Cleaner而不是事务夹具: config.before(:suite) do DatabaseCleaner.clean_with(:truncation) end config.before(:each) do DatabaseCleaner.strategy = :transaction […]