草庐IT

ActiveRecord

全部标签

ruby-on-rails - ActiveRecord 不知道时区?

我有一个关于时区的问题我已经完成了以下操作,当我执行以下查询时,我的activerecord与我的时区不匹配defstock_by_date(date)UserStock.where("date(created_at)=?anduser_id=?",date,current_user.id)end我在我的application.rb中做了以下操作config.active_record.default_timezone=:utcconfig.active_record.time_zone_aware_attributes=trueconfig.beginning_of_week=:su

ruby-on-rails - Rails/ActiveRecord 实现 "Watch list"关系

我正在寻找有关如何最好地为我当前正在开发的应用程序构建“观察列表”的建议。模型如下:#user.rbhas_many:items#item.rbbelongs_to:user我现在需要添加一个监视列表,用户可以在其中收藏某些项目,而无需取得所有权。我试过以下方法:#user.rbhas_many:itemshas_many:watcheshas_many:items,:through=>:watches#watch.rb(user_id:integer,item_id:integer)belongs_to:userbelongs_to:item#item.rb(user_id:inte

ruby-on-rails - 在 rails ActiveRecord 中别名 find_by 方法

这就是问题所在,因为AR中的find_by方法使用了方法缺失技术,您实际上不能使用alias_method为它们取别名(因为该方法不存在!)。或者看起来是这样。有人知道怎么做吗?为了提供更多细节,我正在尝试做的是......我有一个AR模型,User,但它从辅助数据源增强了它的一些属性——这应该是默认行为。最初为了实现这一点,我使用了after_find回调,并在那时从第二个数据源附加了我的新属性。问题是我希望能够偶尔使用find_by方法而不从第二个数据源进行扩充。我现在的想法是使用别名来创建两种类型的find_by方法:find_by和find_without_by。理想的情况是,

ruby-on-rails - 如何调用 ActiveRecord::Base 的加载方法?

要在基于ActiveRecord的模型中进行特殊类型的验证,我需要手动执行更新属性步骤:加载(参数)&&保存但是当我尝试在我的模型实例(mymodel.load(params))上调用“load”时,它会在ActiveSupport上调用“load”,试图加载一个文件。有没有办法告诉Rails使用ActiveRecord方法?谢谢!问候马克 最佳答案 我认为您需要ActiveRecord::Base的assign_attribute方法。我使用的是Rails3.1.3,但希望这对你来说是正确的。您粘贴的update_attribut

ruby-on-rails - 验证在 ActiveRecord 中是如何工作的?

要在Rails的模型中设置验证,我应该这样写:classPosttruevalidates:title,:presence=>true,:length=>{:minimum=>5}end我不知道这是怎么回事。它似乎正在调用名为validates的方法并传递参数,但这不可能,因为我相信我不能直接在类主体中调用方法。那么这里到底发生了什么?更新从答案来看,这似乎是从继承的Base类调用方法,但为什么这不起作用?:classParentdeffooputs"calledfoo"endendclassChild 最佳答案 为什么您认为不能在

ruby-on-rails - 在对象数组上使用 ActiveRecord getter

如何在Ruby中为ActiveRecord对象定义自定义getter函数,以对ActiveRecord对象数组执行操作?例如,我想返回对象数组的加权平均值。因此,如果我有贷款对象(1,2,3),其字段金额为(100,200,300)和default_rate(.1,.2,.3),然后使用正常的ActiveRecord函数Loan.find(1).amount应该返回100,Loan.find(2).default_rate应该返回.2。但如果我有Loan.find(2,3).default_rate,我希望它返回违约率的加权平均值,即.26。我知道我可以使用SQLselect语句来做到

ruby-on-rails - ActiveRecord 数组计数

我正在尝试使用一个block来计算数组中的对象数量,如下所示:cc=u.cookies.count{|n|n.opened}这个返回3,这是错误的。我更进一步,这样做了:cc=u.cookies.count{|n|false}应该总是返回0,但它返回3!!!这返回0,就像它应该的那样:[1,2,3,4].count{|n|false}这是我的用户模型:classUser这是怎么回事?谢谢 最佳答案 u.cookies是ActiveRecord::Relation,不是数组。所以无论block是什么,结果都不会改变,你需要做的是:cc

ruby-on-rails - 如何增加 ActiveRecord 连接超时?

有没有办法增加ActiveRecord的连接超时?当我有超过25个线程且池大小为5时,我不断收到此错误。(ActiveRecord::ConnectionTimeoutError)"couldnotobtainadatabaseconnectionwithin5seconds(waited5.000144774seconds).Themaxpoolsizeiscurrently3;considerincreasingit."如果没有增加连接超时的方法,确保线程尽快使用连接的最佳方法是什么? 最佳答案 根据docs您应该在数据库配置文

ruby-on-rails - 使用 ActiveRecord 获取组内最近记录的平均值

我有以下查询,它计算给定名称和联赛的所有球队的平均印象数:@all_team_avg=NielsenData.where('name=?andleague=?',name,league).average('impressions').to_i但是,每个名称/联赛/球队组合可以有多个条目。我需要修改查询以仅对created_at的最新记录进行平均。在thisanswer的帮助下我想出了一个查询来获得我需要的结果(我会用name和league替换硬编码的WHERE应用程序),但它看起来过于复杂,我不知道如何将它很好地转换为ActiveRecord:SELECTavg(sub.impress

ruby-on-rails - 将 child 设置为 "nil"时,Rails/ActiveRecord has_one 关联行为

我和我的同事注意到关于ActiveRecordhas_one关联的一些感觉是错误/危险的,而且似乎没有被轻易记录下来。假设我们有这样的设置:classUser没有“依赖:销毁”>user=User.create(name:"Bob")>user.subscription=Subscription.create(provider:"Stripe")>user.subscription=nil(0.1ms)begintransactionSQL(0.4ms)UPDATE"subscriptions"SET"user_id"=?,"updated_at"=?WHERE"subscriptio