Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用self.calculate时出现未定义错误_Ruby On Rails_Redmine - Fatal编程技术网

Ruby on rails 使用self.calculate时出现未定义错误

Ruby on rails 使用self.calculate时出现未定义错误,ruby-on-rails,redmine,Ruby On Rails,Redmine,我想在rails中执行mysql函数组_CONCAT。 我正在使用活动记录的计算方法。 像这样自我计算(:group\u concat,:id) 我不知道这是不是正确的方法 你知道如何在rails中执行group_concat吗? 与上面@Camway注释的activerecord的find方法一样,使用合适的Rails方法进行连接、选择和分组也很容易做到这一点。例如,假设我有用户和区域,一个用户可以有0到多个区域,一个区域可以有0到多个用户 这是我的地区模型: class Region <

我想在rails中执行mysql函数组_CONCAT。 我正在使用活动记录的计算方法。 像这样自我计算(:group\u concat,:id)

我不知道这是不是正确的方法

你知道如何在rails中执行group_concat吗?
与上面@Camway注释的activerecord的find方法一样,使用合适的Rails方法进行连接、选择和分组也很容易做到这一点。例如,假设我有用户和区域,一个用户可以有0到多个区域,一个区域可以有0到多个用户

这是我的地区模型:

class Region < ActiveRecord::Base
  # attributes: id (integer), code (string)
  has_and_belongs_to_many :users
end
class User < ActiveRecord::Base
  # attributes: id (integer), email (string)
  has_and_belongs_to_many :regions
end
请注意,由于这是使用适当的AREL支持的AR方法,因此它是可链接的。也就是说,您可以将“”.regions\u listing“添加到针对用户模型的几乎任何AR查询的末尾,它将为您的查询拾取的任何用户对象提供组连接方法/数据

因此:

ruby > User.where("users.email like 'b%'").regions_listing.map { |u| [u.email, u.regions_list] }
 => [["billy@bob.com", "0,4"], ["big@ed.com", "2,3,4,5"]]
此外,您还可以使用HAVING(例如,查找附加到区域0和区域4的所有用户)获取“已制造区域”列表字段中的数据:

ruby > User.regions_listing.having("regions_list LIKE '%0%4%'").map { |u| [u.email, u.regions_list] }
 => [["joe@blow.com", "0,1,2,3,4,5"], ["billy@bob.com", "0,4"]]

您可以随时执行任何您想要的原始SQL。是的,sergio,但在这种情况下,我将不得不更改许多代码。因为我使用的是活动记录的find方法,所以它已经负责生成查询了。那么,有没有一种方法可以在不使用原始sql查询的情况下集成group_concat?顺便说一句,如果您对这个问题有实际的SQL查询,那么请使用thnx。。我从来没能让group_concat与rails很好地配合使用,通常我发现最好的选择是使用Model。选择('group_concat(COLUMN_NAME SEPARATOR)”,作为别名)。group('standard_group_by_field'))
ruby > User.regions_listing.map { |u| [u.email, u.regions_list] }
 => [["joe@blow.com", "0,1,2,3,4,5"], ["sally@mae.com", "1,2,5"], ["billy@bob.com", "0,4"], ["jane@doe.com", "3"], ["big@ed.com", "2,3,4,5"]]
ruby > User.where("users.email like 'b%'").regions_listing.map { |u| [u.email, u.regions_list] }
 => [["billy@bob.com", "0,4"], ["big@ed.com", "2,3,4,5"]]
ruby > User.regions_listing.having("regions_list LIKE '%0%4%'").map { |u| [u.email, u.regions_list] }
 => [["joe@blow.com", "0,1,2,3,4,5"], ["billy@bob.com", "0,4"]]