1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby空配列卒業

Last updated at Posted at 2019-06-14

Railsで開発していて、冗長なコードがあったので( ..)φメモメモ

シチュエーション

例えば、UserモデルとExtraworkモデルがあり、1対多の関係で存在しているとする。
ローカル変数extraworksには、下記レコード(オブジェクト)が複数入っているとする。

ex) Extraworkモデル

id 残業申請日 user_id
1 2019.6.1 2
2 2019.6.2 2
3 2019.6.2 3
4 2019.6.4 3
29 2019.6.15 2
30 2019.6.15 3
31 2019.6.16 4

冗長なコード

ローカル変数extraworksから、一意のUserオブジェクトを配列として取得したい場合、
以前まで下記のように書いていた。
※Rubyでfor文はあまり使用しないと思いますが、使ったことないので使ってみました。

users = []

for i in extraworks do
users << i.user
end

@extrawork_applying_users = users.uniq

# .userで紐付いているUserオブジェクトにアクセス
# .uniqでUserオブジェクトの重複を取り除き、一意にする

mapメソッドを使おう!

空の配列を定義するようなコードはたいていの場合、mapメソッドでシンプルにできる。
※mapメソッドの詳細については、ググればすぐに出てきますので、割愛します。
※&:も少し高度な書き方みたいですが、ググればすぐに出てきますので、割愛します。

@extrawork_applying_users = extraworks.map(&:user).uniq

最後に

プログラミング学習のためには、ググりながら何か作ってみることが
一番効果的な方法と思っていたので、技術書には手を付けていませんでした。
ただ最近は、技術書を読んでいるとこんなことができるのかと学び・気づきの点が
多々発見でき、良い勉強になっています。

今回は「プロを目指す人のためのRuby入門」を読んで気づきを得ました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?