Tag: activerecord

SyntaxError:(irb):26:既给出块arg又给出实际块

我有这个问题 = f.select(:city, Country.where(:country_code => “es”).collect(&:cities) {|p| [ p.city, p.id ] }, {:include_blank => ‘Choose your city’}) 问题是我收到以下错误 SyntaxError: (irb):26: both block arg and actual block given 从我看到我做错了包括collect(&:cities)然后声明块。 有没有办法可以用同样的查询完成两个?

在查询随机简单查询时丢失与MySQL服务器的连接

我在rails堆栈上运行ruby,我们的mysql服务器是独立的,但与我们的应用服务器位于同一站点。 (我们已经尝试将其换成不同规格的mysql服务器,但没有看到任何改进。 在工作时间,我们从没有特定查询得到一些这些。 ActiveRecord::StatementInvalid: Mysql2::Error: Lost connection to MySQL server during query 大多数失败的查询都非常简单,并且在一个查询和另一个查询之间似乎没有模式。 这一切都是从我从Rails 4.1升级到4.2时开始的。 我不知道该尝试什么。 我们的数据库服务器全天CPU不到5%。 我确实从随机交互失败的用户那里得到了错误报告,所以这不是那些已经运行了几个小时或类似的事情的查询,当然,当他们重试它完全相同的事情时。 我们的服务器由cloud66配置。 简而言之:我们的mysql服务器由于某种原因而消失,但这不是因为缺乏资源,而是当我们从这个问题开始时从另一台服务器迁移时它也是一台全新的服务器。 在有时开发function时我也会在localhost上发生这种情况,因此我不认为这是一个负载问题。 我们正在执行以下操作: ruby2.2.5 铁轨4.2.6 mysql2 0.4.8 更新:根据下面的第一个答案,我昨晚将max_connections变量增加到500,并通过show global variables like ‘max_connections’;确认增加show global variables like ‘max_connections’; 我仍然得到连接掉线,今天第一个连接只在几分钟前被删除…. ActiveRecord::StatementInvalid: Mysql2::Error: Lost connection to MySQL server during query 我select * from information_schema.processlist;运行select * from information_schema.processlist; 我有36排回来。 这是否意味着我的应用服务器当时正在运行36个连接? 或者一个过程可以是多个连接吗? […]

在rails中获取关联的最后一个值

模型Price有一个属性数据,所以 Price.pluck(:data) 结果像[3.99,4.55,5.44] 而Price属于Vendor 所以我想为每个供应商选择最优惠的价格 Vendor.all.pluck(prices.order(“data ASC”).first.data) 在这种情况下,如何为每个供应商提取最低价格数据元素? 提前感谢您的帮助。

如何通过单独表格中的总和来订购我的参赛作品?

我想知道如何在PostController #index中订购post,以便在单独的表格中按列总数显示。 这是我如何设置它。 class Post < ActiveRecord::Base :has_many :votes end 和 Class Vote < ActiveRecord::Base :belongs_to :post end 我可以向某个post投票或者投票。 我知道有可能更好的方法来做我目前正在做的事情,但是根据我目前的情况寻找解决方案。 当用户对post进行投票时,值1将通过隐藏字段传递到投票表。 当用户对post进行投票时,将值-1传递给同一列(名称投票)。 我想知道如何按照特定post的投票列(在投票表中)的总和显示我的post。 另一种说法是,如果一个特定的post的净投票金额为5,我希望它出现在一个净投票金额为4的post之上。 我假设我需要以某种方式影响PostController #index动作。 但不知道该怎么做。

Rails 3 ActiveRecord每个关联模型的模型总和

我有2个型号 Category – id – name 和 Transaction – id – category_id – amount 我想找到每个类别的所有交易的总和。 我知道我可以获得一个caterogies列表,然后使用category_id得到所有交易的总和,但它会做20多个查询。 有没有办法在一个查询中完成所有操作? 编辑:我想最终得到[[category1,sum],[category2,sum]]的列表。

如何通过连接表中的条件接收对象

我有桌子Games和Badges他们通过表BadgesGames连接。 t.integer “badge_id” t.integer “game_id” t.boolean “shown”, default: false 我有Game对象,我想要找到所有未shown Badges game_object.(condition?).badges 怎么弄呢?

Rails 3.1 named_scope

编写下面代码的Rails 3.1是什么: named_scope :min_2_items_last_90_days, { :include => { :orders => :order_items }, :conditions => [‘orders.created_at >= ?’, 90.days.ago], :group => ‘people.id’, :having => ‘COUNT(order_items.id) >= 2’ }

如何以及在何处处理相关记录的更新过程?

我正在使用Ruby on Rails 4,我想通过update_attributes方法正确处理相关记录的更新和创建过程。 也就是说,我有以下几点: # Model class Article < ActiveRecord::Base has_many :categories accepts_nested_attributes_for :categories end # Controller class ArticlesController [:name, …]) end end # Logger for the update request Started PATCH “/articles/6” Processing by ArticlesController#update Parameters: {“utf8″=>”✓”, “article”=>{“title”=>”Sample title”, “categories_attributes”=>{“0″=>{“name”=>”Sample Category 1”, “…”=>”…”}, “1”=>{“name”=>”Sample Category 2”, “…”=>”…”}, : “…” => {…}} … 该问题与Rails处理更新数据库中相关记录的方式有关,在我的情况下,通过@article对象更新类别时:提交数据时触发update操作,并将参数传递给update_attributes方法(如在上面的记录器中显示)然后Rails在数据库中创建新的类别记录,一个用于散列categories_attributes存在的每个元素。 但是, […]

如何将对象转换为字符串以用于ActiveRecord查询?

我有一个User ,它有一个String email属性。 但是,当我在我的应用程序中处理电子邮件时,我发现首先将其转换为(非持久的) Email对象是可取的,如下所示: class User < ActiveRecord::Base def email Email.new(self.read_attribute :email) end end Email#to_s Email#to_str和Email#to_str都被定义为原始字符串(例如, Email#to_str ),因此无论客户是处理Email还是String ,它通常都非常透明。 使用ActiveRecord分配属性时,这非常有效: > email = Email.new(‘foo@bar.com’) > user.email = email ActiveRecord知道email属性是一个字符串并相应地转换Email对象。 有点令人费解的是,在查询数据库时它不会这样做: > email = Email.new(‘foo@bar.com’) > User.find_by email: email ActiveRecord::StatementInvalid: can’t cast Email to string 显然,我可以打电话 > User.find_by email: email.to_s 但有没有办法让这个演员自动发生?

MySQL,Rails ActiveRecord日期分组和时区

我想按创建日期计算用户数。 当我查询我的上一个用户时,我有: > User.last.created_at => Thu, 07 Aug 2014 21:37:55 BRT -03:00 当我计算每个日期的用户时,我得到这个: > User.group(“date(created_at)”).count => {Fri, 08 Aug 2014=>1} 创建日期是8月7日,但结果是8月8日。这是因为组条件是UTC,我的时区是’Brasilia’。 我在我的application.rb有这个: config.time_zone = ‘Brasilia’ config.active_record.default_timezone = :local 怎么解决这个?