Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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
Mysql 用于拆分除奇偶以外的数组的方法_Mysql_Ruby On Rails_Algorithm_Sorting - Fatal编程技术网

Mysql 用于拆分除奇偶以外的数组的方法

Mysql 用于拆分除奇偶以外的数组的方法,mysql,ruby-on-rails,algorithm,sorting,Mysql,Ruby On Rails,Algorithm,Sorting,这是 我有一些用户帖子,我想把它们分成3篇,但脑子里想的都是奇数/偶数: @Post1 = Post.where('post_id % 2 = 0') @post2 = Post.where('post_id % 2 != 0') 有没有办法添加@post3并将帖子分为3类。这是为了研究目的,谢谢..您可以这样做: @Post1 = Post.where('post_id % 3 = 0') @post2 = Post.where('post_id % 3 = 1') @post3 = Pos

这是 我有一些用户帖子,我想把它们分成3篇,但脑子里想的都是奇数/偶数:

@Post1 = Post.where('post_id % 2 = 0')
@post2 = Post.where('post_id % 2 != 0')

有没有办法添加
@post3
并将帖子分为3类。这是为了研究目的,谢谢..

您可以这样做:

@Post1 = Post.where('post_id % 3 = 0')
@post2 = Post.where('post_id % 3 = 1')
@post3 = Post.where('post_id % 3 = 2')
@posts = Post.all.in_groups_of((Post.count.to_f/3).ceil, false)
@Post1 = @posts[0]
@post2 = @posts[1]
@post3 = @posts[2]
- @posts.each do |group_of_posts|
  - group_of_posts.each do |post|
    # do whatever you want
这与偶数/奇数的方法相同。 %运算符返回除法的模,因此您可以将其扩展到所需的任何数字。无论如何,不要认为这是一个好方法,特别是如果你的台数太多的话。我建议在()方法的组中使用

在您的情况下,您可以在以下组中使用:

@Post1 = Post.where('post_id % 3 = 0')
@post2 = Post.where('post_id % 3 = 1')
@post3 = Post.where('post_id % 3 = 2')
@posts = Post.all.in_groups_of((Post.count.to_f/3).ceil, false)
@Post1 = @posts[0]
@post2 = @posts[1]
@post3 = @posts[2]
- @posts.each do |group_of_posts|
  - group_of_posts.each do |post|
    # do whatever you want
这样,您可以这样分配它:

@Post1 = Post.where('post_id % 3 = 0')
@post2 = Post.where('post_id % 3 = 1')
@post3 = Post.where('post_id % 3 = 2')
@posts = Post.all.in_groups_of((Post.count.to_f/3).ceil, false)
@Post1 = @posts[0]
@post2 = @posts[1]
@post3 = @posts[2]
- @posts.each do |group_of_posts|
  - group_of_posts.each do |post|
    # do whatever you want
或者,我认为更好的方法是只分配@posts变量。然后,在视图上,按如下方式对其进行迭代:

@Post1 = Post.where('post_id % 3 = 0')
@post2 = Post.where('post_id % 3 = 1')
@post3 = Post.where('post_id % 3 = 2')
@posts = Post.all.in_groups_of((Post.count.to_f/3).ceil, false)
@Post1 = @posts[0]
@post2 = @posts[1]
@post3 = @posts[2]
- @posts.each do |group_of_posts|
  - group_of_posts.each do |post|
    # do whatever you want

这样,您的代码将保持更干净,更易于维护。祝你好运

(Post.count/3)的组中的Post.all.怎么样?除了显而易见的,
post_id%3=2等……感谢@Phlip的参与,但我正在尝试制作3个变量,以便在视图“@post1”@post2”@post3”中使用它们,这样我就可以在视图中和组中调用它们了,只应用于一个变量,而除了显而易见的post_id%3=2之外,我没有得到“@keith你需要查一下%做了什么。如果您已经使用%2将其拆分为2,那么很明显您将如何使用%3将其拆分为3组。@Gabe Sechan我知道这意味着可拆分并返回除法结果,但我寻找了最难的方法,而不是简单的设置:)谢谢您回答@Ronan Lopes,但在我的情况下,我如何在组中使用非常感谢,请稍等,我会更新答案,告诉你非常感谢@Ronan Lopes先生,这非常有效。