回答編集履歴

2

レコード取得方法の訂正

2015/09/11 05:26

投稿

deathsan
deathsan

スコア126

test CHANGED
@@ -8,17 +8,53 @@
8
8
 
9
9
 
10
10
 
11
+ 少し長めのコードなんですが、極力ActiveRecordオブジェクトを作成せず最後の方で纏めて返しています。
12
+
11
- クラスメソッドを作ってますがスコー定義してください。
13
+ 仕事の合間に5分くらいで作っコードなので、もっといいロジックが出たらそちら使ってください。
14
+
15
+ ちなみに再現もしてないので動作保障できません。
16
+
17
+
18
+
19
+ 怪しいところ
20
+
21
+ ①sort_by!のところにもしかするとblank判定が要るかもしれないです。
22
+
23
+ ②storeのところのハッシュ追加がうまくいかないかもしれません。(うろ覚えなので)
24
+
25
+
12
26
 
13
27
  model/post.rb
14
28
 
15
29
  ```ruby
16
30
 
17
- # お気に入りの数が多いレコード順にソートする。
18
-
19
31
  def self.sort_by_favorites
20
32
 
33
+ result = []
34
+
21
- #期待した値が取れないので暇があれば修正します
35
+ search_condition = {}
36
+
37
+ post_ids = Favorite.pluck(:post_id)
38
+
39
+
40
+
41
+ if post_ids.present?
42
+
43
+ post_ids.each { |post_id| search_hash.store(post_id, Favorite.where(post_id: post_id).count) }
44
+
45
+ search_condition.sort_by! { |key,val| -val }
46
+
47
+ end
48
+
49
+
50
+
51
+ if search_condition.present?
52
+
53
+ search_condition.each { |key, val| result << self.find(key) }
54
+
55
+ end
56
+
57
+ return result
22
58
 
23
59
  end
24
60
 

1

訂正

2015/09/11 05:26

投稿

deathsan
deathsan

スコア126

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  def self.sort_by_favorites
20
20
 
21
- return self.joins(:favorites).order(post_id: :desc)
21
+ #期待した値が取れないので暇があれば修正します
22
22
 
23
23
  end
24
24