草庐IT

ActiveRecord

全部标签

ruby-on-rails - Rails 仅包含关系中的选定列

我会尽力解释:我有一张表“Product”和一张表“Store”。我试图只获取页面上显示的商店名称,但ActiveRecord将商店中的所有列返回给我。代码如下:@product=Product.order(id::desc).includes(:store).select("products.id,products.store_id,stores.name").limit(1)内置查询(来自Rails):ProcessingbyIndexController#indexasHTMLProductLoad(0.0ms)SELECTproducts.id,products.store_i

ruby-on-rails - 如何使用 Rails 在一个查询中执行多个语句?

我将RubyonRails与ActiveRecord和PostgreSQL结合使用。如何执行多个sql查询?我需要它来运行自定义迁移脚本,例如:Foo.connection.execute'20120806120823';SQL我不接受来自用户的数据,所以我不担心sql注入(inject)。类似于CLIENT_MULTI_STATEMENTS也许在MySQL中?来自MySQL/PHP文档:CLIENT_MULTI_STATEMENTS:Telltheserverthattheclientmaysendmultiplestatementsinasinglestring(separated

ruby-on-rails - 如何使方法应用于 ActiveRecord 对象的集合

目前,如果我想将一个方法应用于一组ActiveRecord对象,我必须像这样构建调用:messages=Message.find(:all)csv=Message.to_csv(messages)如何定义方法,使其结构如此?messages=Message.find(:all)csv=messages.to_csv这是当前模型代码:require'fastercsv'classMessage 最佳答案 以下将在消息数组中包含的所有实例上调用to_csv。messages=Message.find(:all)csv=messages.

ruby-on-rails - 在同一模型上具有多个关联的多态关联

我对我得到的多态关联有点困惑。我需要一个Article模型来有一个标题图像和许多图像,但我想要一个单一的图像模型。更令人困惑的是,图像模型是多态的(以允许其他资源拥有许多图像)。我在我的文章模型中使用这个关联:classArticle:imageablehas_many:images,:as=>:imageableend这可能吗?谢谢。 最佳答案 我试过了,但是header_image返回了其中一张图片。仅仅是因为图像表没有指定不同的图像使用类型(header_image与普通图像)。它只是说:imageable_type=Imag

ruby-on-rails - 如何在 Rails 中捕获 ActiveRecord::Base.connection.execute 的错误?

我想按如下方式运行原始SQL查询:ActiveRecord::Base.connection.execute(some_query);我能否捕获执行查询时发生的任何错误?如果是,如何?execute会返回什么吗?文档中没有说明。干杯 最佳答案 您可以像往常一样修复错误。例如:beginActiveRecord::Base.connection.execute(some_query)rescue#dostuffwithexceptionend看看MySql(forexample)adapter'scode看看发生了什么。在这种情况下,

ruby - Rails 3 Order By Count on has_many :through

我有一个应用程序,我可以在其中列出项目并为每个项目添加标签。模型Items和Tags是这样关联的:classItem:taggingsendclassTagging:taggingsend因此,这种多对多关系允许我为每个Item设置n标签,并且同一个标签可以多次使用。我想列出所有标签,这些标签按与该标签关联的项目数排序。更多使用的标签,首先显示。较少使用,最后。我该怎么做?问候。 最佳答案 Tag.joins(:taggings).select('tags.*,count(tag_id)as"tag_count"').group(:

ruby-on-rails - 测试速度 : ActiveRecord use_transactional_fixtures vs. DatabaseCleaner.strategy = :transaction

从来源(database_cleaner,active_record)来看,它们应该同样快。但是有人声称使用database_cleaner的事务策略会降低Controller和模型规范的速度(forexample)。我手头没有用于基准测试的大型测试套件。任何人有任何见解或比较两者? 最佳答案 我花了一点时间在广泛使用ActiveRecord固定装置的中型代码库上比较两者。当我将其切换为使用DatabaseCleaner而不是use_transactional_fixtures时,模型规范开始花费大约两倍的时间。在进行了与您相同的比

ruby-on-rails - ActiveRecord 急切加载多个 belongs_to 关联

问题我有以下ActiveRecord模型:classPersonbelongs_to:favourite_car,class_name:'Car'belongs_to:business_car,class_name:'Car'belongs_to:home_car,class_name:'Car'end当我想访问所有这三个关联时,它会生成三个选择查询:SELECT*FROMcarsWHEREcars.id=?这本质上是N+1问题。理想情况下,我希望它只生成一个表单查询SELECT*FROMcarsWHEREcars.idIN(?,?,?)可能的解决方案我可以将其移动到一个has_man

ruby-on-rails - object.count 返回 0。但是 object.any?返回真。发生了什么?

@card.submissions返回:]>@card.submissions.any?返回true。@card.submissions.count返回0。我要实现的是:if@card.submissions.any?render@card.submissionsend 最佳答案 看起来Submission是一个新记录(因为id是nil)。如果它是新的,它还没有进入数据库。count对数据库进行SQL调用以确定行数,因此正确地返回零。any?返回true,因为集合中有一个对象。如果您尝试@card.submissions.to_a.

ruby - ActiveRecord 3.1.0 多数据库

我正在尝试将ActiveRecordgem升级到最新的3.1.0版本并看到出现了很多异常,我认为这是由于我们处理多个数据库的方式所致。对于我们的每个数据库,我们指定一个单独的基类,它继承自ActiveRecord::Base,并在其中调用establish_connection。没有跨数据库关系。到目前为止,这对我们来说效果很好。升级到ActiveRecord3.1.0后,我看到它在遍历关系时失败并出现ActiveRecord::ConnectionNotEstablished异常(即,它将成功地从数据库,但在导航到相关类时失败)。回溯的第一行是C:/Ruby/lib/ruby/gem