kyopa’s blog

自分用プログラミングアウトプット

current_userのレコードの数を取得する

Luck.

[1] pry(main)> Luck.all

 

id: 49,
user_id: 38,
content: "こんにちはAです",
image: "IMG_0303.JPG",
created_at: Sun, 30 Sep 2018 07:28:34 UTC +00:00,
updated_at: Sun, 30 Sep 2018 07:28:34 UTC +00:00>,
#<Luck:0x00000003afa610
id: 50,
user_id: 38,
content: "寒いですね",
image: nil,
created_at: Sun, 30 Sep 2018 07:28:50 UTC +00:00,
updated_at: Sun, 30 Sep 2018 07:28:50 UTC +00:00>,
#<Luck:0x00000003afa4d0
id: 51,
user_id: 39,
content: "こんにちはBです",
image: "IMG_0306.JPG",
created_at: Sun, 30 Sep 2018 07:29:52 UTC +00:00,
updated_at: Sun, 30 Sep 2018 07:29:52 UTC +00:00>]

 

 

Luck.allの数は3

 

User_id38は2

User_id39は1

この数字を取得(current_userのレコードの数を取得)するにはどうすればいいのか!

 

 

いろいろためした


[2] pry(main)> Luck.user_id.all
NoMethodError: undefined method `user_id' for #<Class:0x00000003f7ba18>
from /usr/local/rvm/gems/ruby-2.4.0/gems/activerecord-5.1.6/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
[3] pry(main)> Luck.user_id:38.all
SyntaxError: unexpected tINTEGER, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
Luck.user_id:38.all
^
[3] pry(main)>
[4] pry(main)>
[5] pry(main)>
[6] pry(main)> Luck.user_id
NoMethodError: undefined method `user_id' for #<Class:0x00000003f7ba18>
from /usr/local/rvm/gems/ruby-2.4.0/gems/activerecord-5.1.6/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
[7] pry(main)> Luck.user_id.all
NoMethodError: undefined method `user_id' for #<Class:0x00000003f7ba18>
from /usr/local/rvm/gems/ruby-2.4.0/gems/activerecord-5.1.6/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
[8] pry(main)> User.all
User Load (1.3ms) SELECT "users".* FROM "users"
=> [#<User id: 38, email: "a@gmail.com", created_at: "2018-09-30 07:28:02", updated_at: "2018-09-30 07:28:02", avatar: "IMG_0292.JPG", name: "a@gmail.com">,
#<User id: 39, email: "b@gmail.com", created_at: "2018-09-30 07:29:31", updated_at: "2018-09-30 07:29:31", avatar: "IMG_0308.JPG", name: "b">]
[9] pry(main)> User id: 38
NoMethodError: undefined method `User' for main:Object
from (pry):6:in `__pry__'
[10] pry(main)> User id: 38,
[10] pry(main)*
[10] pry(main)*
[10] pry(main)*
[10] pry(main)>
[11] pry(main)>
[12] pry(main)>
[13] pry(main)>
[14] pry(main)> current_user
NameError: undefined local variable or method `current_user' for main:Object

 

なんか違う

 

 

15] pry(main)> User.find(38)
User Load (0.8ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 38], ["LIMIT", 1]]
=> #<User id: 38, email: "a@gmail.com", created_at: "2018-09-30 07:28:02", updated_at: "2018-09-30 07:28:02", avatar: "IMG_0292.JPG", name: "a@gmail.com">

 

 

おっUser38さんの値が取得できてるぞ!

 

[16] pry(main)> User.find(38).lucks
User Load (0.9ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 38], ["LIMIT", 1]]
Luck Load (0.5ms) SELECT "lucks".* FROM "lucks" WHERE "lucks"."user_id" = $1 "user_id", 38
=> [#<Luck:0x00000003ace538
id: 49,
user_id: 38,
content: "こんにちはAです",
image: "IMG_0303.JPG",
created_at: Sun, 30 Sep 2018 07:28:34 UTC +00:00,
updated_at: Sun, 30 Sep 2018 07:28:34 UTC +00:00>,
#<Luck:0x00000003bc6828
id: 50,
user_id: 38,
content: "寒いですね",
image: nil,
created_at: Sun, 30 Sep 2018 07:28:50 UTC +00:00,
updated_at: Sun, 30 Sep 2018 07:28:50 UTC +00:00>]

 

 

User38さんのLuckの情報!!

 

 

[27] pry(main)> User.find(38).lucks.count
User Load (0.7ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 38], ["LIMIT", 1]]
(0.8ms) SELECT COUNT(*) FROM "lucks" WHERE "lucks"."user_id" = $1 "user_id", 38
=> 2

 

 

User38さんのLuckのレコードの数が取得できた!!

 

 

 

これをビューで表示させるには、current_user使えばいける!!

 

<%= current_user.lucks.count%>

ログインしたユーザーのLuckのレコード数

 

できた。