スパルタコースでは毎週何かしらのイベントを開催しています。

ちょっと前の内容ですが、今回もまた「Railsポートフォリオレビュー会」です。

あ、週に一人くらいまでなら無償でレビューできると思うのでお気軽にお声がけください。

動画

Railsポートフォリオレビュー会 | TechEssentials

Image from Gyazo

雑なメモですが、こんなフィードバックをしました。

2/6 ポートフォリオレビュー会

https://github.com/RyotaroNishimura/toikke

https://elegant-livre-92785.herokuapp.com/

Image from Gyazo

ここの「Copy permalink」からURLをコピって貼り付けていきましょー。

(例)

だいそん

https://github.com/RyotaroNishimura/toikke/blob/5c48a1a3d3b275a14b2dfcc84f62ddbfe48cd951/app/models/comment.rb#L2

belongs_to :userはなくていい?

コミットメッセージ「1」とかはわかりづらすぎる

READMEに何も書かれていないのでどんなアプリなのかわからない。テーブル設計とかインフラ構成とかあってもいいかも。

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/config/routes.rb#L8

post "favorites/:post_id/create" => "favorites#create"
resources :post do 
  resource :favorite
end

いいねするとき POST /posts/:post_id/favorite
いいねを解除する時 DELETE /posts/:post_id/favorite

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/config/routes.rb#L7

resources :posts do 
  get :favorites, on: :collection
end

GET /posts/favorites

みけた

gitignoreについて

https://github.com/RyotaroNishimura/toikke

Postクラスのfeed_comment(post_id)メソッドについて

https://github.com/RyotaroNishimura/toikke/blob/master/app/models/post.rb

# post has many comments の関係
  def feed_comment(post_id)
    Comment.where("post_id = ?", post_id) # Comment.where(post_id: post_id)
  end

associationを使えばメソッドが不要なはず。
例えば、これで最初のpostに紐づくcommentsを取得できます

@post = Post.first
@post.comments

なおき

https://github.com/RyotaroNishimura/toikke/blob/5c48a1a3d3b275a14b2dfcc84f62ddbfe48cd951/app/controllers/users_controller.rb#L2-L5

%記法で書いた方が見栄えがいい気がします!
これは好みでしょうか?

 before_action :logged_in_user, only: %i[ index show edit update destroy following followers ]

たいしろう

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/app/views/posts/_post_form.html.erb#L5-L6

HTMLに変換された時に、labelのfor属性とinputの id属性が
一致していないとラベルを押した時にinputが活性化しないはずです!
なんで、どうしてもと言う理由がない限りはデフォルトで付与される titleを使った方がいいと思いました!

まこと

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/app/controllers/sessions_controller.rb#L2

newアクションでオブジェクトを作成していないので、新規登録ができなくなっていると思いました!

ゲン

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/app/controllers/sessions_controller.rb#L7

質問なんですけどこの部分をこのように変えても動作は同じなんですか?

if user&.authenticate(params[:session][:password])

かろりーな

https://github.com/RyotaroNishimura/toikke/blob/master/config/database.yml
mysqlのユーザーとパスワードが直書きになっているので、
.gitignoreファイル等で管理に含めないほうがよさそうだと思いました。

JUN

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/app/views/layouts/application.html.erb#L3

viewportを記載した方がスマホでみやすくなると思いました!

てる

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/app/models/user.rb#L92

せっかく関連付けしているのでFavoriteでなく、favoritesを使った方が良いかと!
(みけたさんがpostクラスに言及していることとほぼ同じです!)

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/app/models/user.rb#L100

存在しているかどうかの判定ならpresent?使った方が明示的でわかりやすいかと!

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/app/models/post.rb#L8

belongs_toで関連付けするとデフォルトで外部キーのnilにvalidateがかかります。
他のクラスで設定している外部キーのvalidateにも言えるはず!

いちおう、rails guideに乗っております!
(https://railsguides.jp/upgrading_ruby_on_rails.html?version=6.1#active-record%E3%81%AEbelongs-to%E3%81%AF%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7%E5%BF%85%E9%A0%88)

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/app/controllers/users_controller.rb#L2

ログインを許可しないアクションの方が少なそうなのでonlyでなくexcept使った方がコード短くて良いかなと!

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/app/controllers/users_controller.rb#L81

登録されたユーザーでないと編集ができないにしているのでしょうか?
logged_in_userでログインしているかどうかを制限しているかつさらにeditとupdateに関して現在のユーザーであるかどうか判定する理由が何故なのか知りたいです!!

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/app/controllers/posts_controller.rb#L35

 update_attributesを使用したのか気になりました!

https://github.com/RyotaroNishimura/toikke/blob/c910cb2941370a399ead0591150222815110229e/app/controllers/posts_controller.rb#L44

current_user使った方が安全性増すと思います!!


こんな感じで毎週勉強会をやってます。
スパルタコースはサポートの質が落ちないように少数のコミュニティとして活動しています。
実際に未経験からRailsの業務委託で仕事をしている人もいるくらいなのでちゃんと学習すればスキルはつきます。

普段はSlackでやりとりしてますのでリンクを貼っておきますね。
Slackコミュニティへの招待リンク

ではでは。