Follow-up from "Create table `project_data_transfers` to store egress data per project"
The following discussions from !107970 should be addressed:
- [ ] @jessieay started a [discussion](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107970#note_1247927372):
> **Question**: more for my own learning than anything else: do we have an existing dev docs on using time in Gitlab/Ruby?
>
> I ask because the use of `utc` here does not change the value because we are using if `gitlab.yml` has the default time zone of `UTC`:
>
> ```
> > Time.current.beginning_of_month
> => Sun, 01 Jan 2023 00:00:00.000000000 UTC +00:00
> > Time.current.utc.beginning_of_month
> => 2023-01-01 00:00:00 UTC
> ```
>
> But this is of course configurable, so it makes a lot of sense to explicitly request UTC time. If this is not already documented somewhere then it would be great to write it down! I am also interested in any other timezone-related quirks that might exist in the codebase.
- [ ] @jessieay started a [discussion](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107970#note_1247927375):
> **Suggestion**: Remove this method and move its logic directly into `.current_month`
>
> Reasoning:
>
> This method is only used in the context of the `current_month` scope, so it really should be considered a private method.
>
> At the same time, [making a class method private in Ruby](https://jakeyesbeck.com/2016/01/24/ruby-private-class-methods/) always feels kind of hacky to me.
>
> Because the method is so simple, why not include its logic directly in the `current_month` scope itself? I think it will be just as readable if we do that and will result in less code :tada:
- [ ] @jessieay started a [discussion](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107970#note_1247927385):
> **Suggestion (non-blocking)**: add a validation for this uniqueness constraint and test that instead
>
> Reasoning:
>
> I do not usually see RSpec tests for database constraints. I think this is because I almost always [add ActiveRecord validations to mirror database uniqueness constraints](https://thoughtbot.com/blog/validation-database-constraint-or-both) so that [users see a validation error rather than an application error](https://thoughtbot.com/blog/the-perils-of-uniqueness-validations).
>
> In this case, I imagine that the data transfer will *not* be reated by a human, so perhaps the human readable-ness of a validation message is not required and we do want an application error raised. So really up to you as subject-matter expert to decide whether we should do this or not...
issue