草庐IT

find-by-sql

全部标签

ruby-on-rails - 弃用警告 : Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s)

我将我的Rails5.1.4应用更新到了5.2.0。我的一个模型中有以下范围:scope:by_category,lambda{|category_slug|category_ids=Category.find_by(slug:category_slug)&.subtree_idswhere(category_id:category_ids)}由于该范围,Rails返回以下错误:DEPRECATIONWARNING:Dangerousquerymethod(methodwhoseargumentsareusedasrawSQL)calledwithnon-attributeargume

ruby - 使用 :sql 模式格式时如何使 rake db :migrate generate schema. rb

如果在config/application.rb中使用这个选项:config.active_record.schema_format=:sql然后当你这样做时:rakedb:migrate它只转储db/structure.sql。我知道它没有使用db/schema.rb因为它使用的是:sql选项,但是你如何制作rakedb:migrate还生成db/schema.rb吗?我们需要它,因为RubyMine4.5和IntelliJIDea11使用db/schema.rb来自动完成列。 最佳答案 要生成/更新db/schema.rb,即使

ruby - 为什么要使用 SQL 构建器? Arel 诉 Sequel 诉 T-SQL

我正在尝试了解通过面向对象的构建器DSL构建SQL与参数化原始SQL字符串相比的优势。在以三种方式研究/实现相同的查询之后,我注意到原始SQL是迄今为止最容易阅读的。这就引出了一个问题,“为什么要跳过一个箍?”为什么不直接声明和使用原始SQL?这是我想出的:首先,我猜它使SQL更具可移植性,因为它可以被任何带有适配器的数据库使用。我猜这是大人物,对吧?尽管如此,难道大多数T-SQL不是大多数数据库都能理解的吗?其次,它提供了一个可以重复使用的查询对象——作为其他查询、命名范围链接等的基础。通过构建SQL而不是声明SQL,您实现的主要投资返回是什么?definstances_of_sql

sql - Ruby Rails - 使用 created_at 列制作表格

Rubyonrails有t.timestamps方法创建两列,created_at和updated_at。我怎样才能只创建created_at列?这行得通classCreateLinesSources这两个我都想工作但是都失败了classCreateLinesSources和classCreateLinesSources 最佳答案 t.datetime:created_at,null:false就像任何其他专栏一样。由于列名,Rails仍会负责魔术更新。 关于sql-RubyRails-

ruby-on-rails - Rails 3.1 与 PostgreSQL : GROUP BY must be used in an aggregate function

我正在尝试加载按user_id分组并按created_at排序的最新10个艺术。这适用于SqlLite和MySQL,但在我的新PostgreSQL数据库上出错。Art.all(:order=>"created_atdesc",:limit=>10,:group=>"user_id")ActiveRecord错误:ArtLoad(18.4ms)SELECT"arts".*FROM"arts"GROUPBYuser_idORDERBYcreated_atdescLIMIT10ActiveRecord::StatementInvalid:PGError:ERROR:column"arts.i

ruby - 如何优化 ActiveRecord find_in_batches 查询?

我正在使用Rails4.0.0和Ruby2.0.0。我的Post(如在博客文章中)模型与用户相关联,该用户具有用户的user_name、first_name、last_name的组合。我想迁移数据,以便通过外键(即用户ID)将帖子关联到用户。我在posts表中有大约1100万条记录。我在Linux服务器上使用rake任务运行以下代码来迁移数据。然而,我的任务一直被服务器“杀死”,大概是由于rake任务,特别是下面的代码,消耗了太多内存。我发现将batch_size降低到20并将sleep(10)增加到sleep(60)允许任务运行更长的时间,在不被杀死的情况下总共更新更多的记录,但需要

ruby-on-rails - OmniAuth Railscast 教程中的 DangerousAttributeError : create is defined by ActiveRecord

我看过ActiveRecord::DangerousAttributeError和SO上的其他类似线程,但它们没有解决相同的问题。我正在学习omniauth教程:http://railscasts.com/episodes/235-omniauth-part-1?view=asciicast我能够通过Twitter的oauth进行身份验证并返回用户的数据(auth)。问题是由于此错误消息,我无法在数据库(sqlite3)中创建/保存它。错误:ActiveRecord::DangerousAttributeErrorinAuthenticationsController#createcr

sql - ActionView::Template::Error (PG::UndefinedFunction: ERROR: operator does not exist: integer ~~ 未知

为了在Heroku中使用,我从MySQL切换到了PostgreSQL。现在我的搜索不起作用。无法弄清楚运营商出了什么问题。ActionView::Template::Error(PG::UndefinedFunction:ERROR:operatordoesnotexist:integer~~unknown.2014-11-11T19:59:58.082607+00:00app[web.1]:ProcessingbyAllListingsController#search_listingsasJS2014-11-11T19:59:58.105074+00:00app[web.1]:4:

ruby-on-rails - 为什么我会收到此 Passenger 错误 Could not find rake-0.9.2.2 in any of the sources?

我刚刚创建了一个新的空Rails应用程序,它几乎是空的。我创建它只是为了找出问题所在,但我收到了以下错误。我正在使用Rails3.1.0和Ruby1.9.2Errormessage:Couldnotfindrake-0.9.2.2inanyofthesources(Bundler::GemNotFound)Exceptionclass:PhusionPassenger::UnknownError所以我将rake-0.9.2.2添加到Gemfile并运行bundle,但我仍然收到相同的错误消息。我不知道问题出在哪里,我什至尝试打开Rails日志文件,但里面什么也没有。我尝试了很多次以不同

ruby-on-rails - 使用 ActiveRecord find_in_batches 方法删除大数据

好的,所以我知道在处理非常大的数据时,我们可以使用find_in_batches,据我所知,它完成了Model.all.each的工作以一种非常快速的方式,效率更高现在,我有一个非常大的数据要删除,我正在考虑使用相同的find_in_batches来批量删除它们。下面是我所拥有的(来自rake任务database.rake):old_messages=TextMessage.where("created_at但是,当我运行它时,出现以下错误:ArgumentError:wrongnumberofarguments(0for1..3)/Users/Sunday/.rvm/gems/rub