model_base_generators 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/example/app/controllers/issues_controller.rb +1 -1
  3. data/example/app/controllers/phases_controller.rb +62 -0
  4. data/example/app/helpers/phases_helper.rb +2 -0
  5. data/example/app/models/issue.rb +1 -0
  6. data/example/app/models/phase.rb +3 -0
  7. data/example/app/validations/issue_validation.rb +1 -0
  8. data/example/app/validations/phase_validation.rb +10 -0
  9. data/example/app/validations/project_validation.rb +1 -0
  10. data/example/app/views/issues/_form.html.erb +7 -0
  11. data/example/app/views/issues/_table.html.erb +2 -0
  12. data/example/app/views/issues/show.html.erb +2 -0
  13. data/example/app/views/phases/_form.html.erb +55 -0
  14. data/example/app/views/phases/_table.html.erb +31 -0
  15. data/example/app/views/phases/edit.html.erb +5 -0
  16. data/example/app/views/phases/index.html.erb +9 -0
  17. data/example/app/views/phases/new.html.erb +5 -0
  18. data/example/app/views/phases/show.html.erb +25 -0
  19. data/example/config/application.rb +5 -1
  20. data/example/config/locales/devise.ja.yml +63 -0
  21. data/example/config/locales/rails.ja.yml +202 -0
  22. data/example/config/routes.rb +1 -0
  23. data/example/db/schema.rb +9 -0
  24. data/example/spec/controllers/phases_controller_spec.rb +170 -0
  25. data/example/spec/factories/issues.rb +1 -0
  26. data/example/spec/factories/phases.rb +8 -0
  27. data/example/spec/factories/project_assignments.rb +2 -2
  28. data/example/spec/routing/phases_routing_spec.rb +39 -0
  29. data/example/spec/views/issues/edit.html.erb_spec.rb +1 -0
  30. data/example/spec/views/issues/index.html.erb_spec.rb +1 -0
  31. data/example/spec/views/issues/new.html.erb_spec.rb +1 -0
  32. data/example/spec/views/issues/show.html.erb_spec.rb +1 -0
  33. data/example/spec/views/phases/edit.html.erb_spec.rb +20 -0
  34. data/example/spec/views/phases/index.html.erb_spec.rb +21 -0
  35. data/example/spec/views/phases/new.html.erb_spec.rb +20 -0
  36. data/example/spec/views/phases/show.html.erb_spec.rb +17 -0
  37. data/example/spec/views/project_assignments/index.html.erb_spec.rb +2 -2
  38. data/example/spec/views/project_assignments/show.html.erb_spec.rb +2 -2
  39. data/lib/model_base/column_attribute.rb +3 -3
  40. data/lib/model_base/version.rb +1 -1
  41. data/lib/templates/erb/scaffold/_table.html.erb +4 -0
  42. data/lib/templates/erb/scaffold/show.html.erb +4 -0
  43. data/lib/templates/factory_girl/factory.rb +4 -0
  44. metadata +21 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 68314ef8b406587412d78bdddaf77afac98fafd5
4
- data.tar.gz: 4989519ef484404842ade4d6322048c4205fbe1f
3
+ metadata.gz: 14ffe879896645ad2881f5d7cea65acff0493005
4
+ data.tar.gz: e2e5796a4879d9081a16bedcb8c5babbedebabca
5
5
  SHA512:
6
- metadata.gz: bb3fb2d839116e34fd7fad805a2f8e988c1b7f0f4db1f909c61fb9fe41cf3c6fffb41f13e085ab56a6f09af3657a1df31329d12ed9a55acf6612ff45fb9b35a9
7
- data.tar.gz: 4c3462e95b70e2ba2dd8479e044a0bbe2da42323336ba2511e31cb5ae67beee6d50c6c90d4ccfddc642ad9d4a272eeb61c5b0530f271ecdf144d9058ccb76cf3
6
+ metadata.gz: f259992f73231c6d76d80bab1bd9c0fec301aec36accc1745a84c27ef354629c48e5955a2e4dce7c9b717e96aa3764b960898ab47486c3af286583d1d0d39b4d
7
+ data.tar.gz: c38fa3e58ff852a795226ce9fca1496ace9b62493a1a13c295c8520ffab1e9c742698db24dba08a712d17d69b72a2924cd571200a5c90dbdbce254675f310b9e
@@ -57,6 +57,6 @@ class IssuesController < ApplicationController
57
57
 
58
58
  # Only allow a trusted parameter "white list" through.
59
59
  def issue_params
60
- params.require(:issue).permit(:project_id, :title, :status, :creator_id)
60
+ params.require(:issue).permit(:project_id, :title, :status, :creator_id, :assignee_id)
61
61
  end
62
62
  end
@@ -0,0 +1,62 @@
1
+ class PhasesController < ApplicationController
2
+ include Authentication
3
+ load_and_authorize_resource except: [:index]
4
+
5
+ before_action :set_phase, only: [:show, :edit, :update, :destroy]
6
+
7
+ # GET /phases
8
+ def index
9
+ @phases = Phase.all
10
+ end
11
+
12
+ # GET /phases/1
13
+ def show
14
+ end
15
+
16
+ # GET /phases/new
17
+ def new
18
+ @phase = Phase.new
19
+ end
20
+
21
+ # GET /phases/1/edit
22
+ def edit
23
+ end
24
+
25
+ # POST /phases
26
+ def create
27
+ @phase = Phase.new(phase_params)
28
+
29
+ if @phase.save
30
+ redirect_to @phase, notice: 'Phase was successfully created.'
31
+ else
32
+ render :new
33
+ end
34
+ end
35
+
36
+ # PATCH/PUT /phases/1
37
+ def update
38
+ if @phase.update(phase_params)
39
+ redirect_to @phase, notice: 'Phase was successfully updated.'
40
+ else
41
+ render :edit
42
+ end
43
+ end
44
+
45
+ # DELETE /phases/1
46
+ def destroy
47
+ @phase.destroy
48
+ redirect_to phases_url, notice: 'Phase was successfully destroyed.'
49
+ end
50
+
51
+ private
52
+
53
+ # Use callbacks to share common setup or constraints between actions.
54
+ def set_phase
55
+ @phase = Phase.find(params[:id])
56
+ end
57
+
58
+ # Only allow a trusted parameter "white list" through.
59
+ def phase_params
60
+ params.require(:phase).permit(:project_id, :name, :started_at, :finished_at)
61
+ end
62
+ end
@@ -0,0 +1,2 @@
1
+ module PhasesHelper
2
+ end
@@ -3,6 +3,7 @@ class Issue < ApplicationRecord
3
3
 
4
4
  belongs_to :project
5
5
  belongs_to :creator, class_name: 'User'
6
+ belongs_to :assignee, class_name: 'User'
6
7
 
7
8
  validates :title, presence: true
8
9
 
@@ -0,0 +1,3 @@
1
+ class Phase < ApplicationRecord
2
+ belongs_to :project
3
+ end
@@ -5,5 +5,6 @@ module IssueValidation
5
5
  validates :project_id, presence: true, numericality: true
6
6
  validates :title, presence: true
7
7
  validates :creator_id, presence: true, numericality: true
8
+ validates :assignee_id, numericality: true, allow_nil: true
8
9
  end
9
10
  end
@@ -0,0 +1,10 @@
1
+ module PhaseValidation
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ validates :project_id, presence: true, numericality: true
6
+ validates :name, presence: true
7
+ validates :started_at, presence: true
8
+ validates :finished_at, presence: true
9
+ end
10
+ end
@@ -4,5 +4,6 @@ module ProjectValidation
4
4
  included do
5
5
  validates :owner_id, presence: true, numericality: true
6
6
  validates :name, presence: true
7
+ validates :closed, inclusion: [true, false]
7
8
  end
8
9
  end
@@ -43,6 +43,13 @@
43
43
  </div>
44
44
  <%=f.error_span(:creator_id) %>
45
45
  </div>
46
+ <div class="form-group">
47
+ <%= f.label :assignee_id, :class => 'control-label col-lg-2' %>
48
+ <div class="col-lg-10">
49
+ <%= f.collection_select :assignee_id, User.all, :id, :email, {include_blank: true}, :class=>"form-control" %>
50
+ </div>
51
+ <%=f.error_span(:assignee_id) %>
52
+ </div>
46
53
 
47
54
  <div class="form-group">
48
55
  <div class="col-lg-offset-2 col-lg-10">
@@ -6,6 +6,7 @@
6
6
  <th><%= model_class.human_attribute_name(:title) %></th>
7
7
  <th><%= model_class.human_attribute_name(:status) %></th>
8
8
  <th><%= model_class.human_attribute_name(:creator_id) %></th>
9
+ <th><%= model_class.human_attribute_name(:assignee_id) %></th>
9
10
  <th><%= model_class.human_attribute_name(:created_at) %></th>
10
11
  <th><%=t '.actions', :default => t("helpers.actions") %></th>
11
12
  </tr>
@@ -17,6 +18,7 @@
17
18
  <td><%= link_to issue.title, issue_path(issue) %></td>
18
19
  <td><%= issue.status_text %></td>
19
20
  <td><%= issue.creator.email %></td>
21
+ <td><%= issue.assignee.try(:email) %></td>
20
22
  <td><%=l issue.created_at %></td>
21
23
  <td>
22
24
  <%= link_to t('.edit', :default => t("helpers.links.edit")),
@@ -12,6 +12,8 @@
12
12
  <dd><%= @issue.status_text %></dd>
13
13
  <dt><strong><%= model_class.human_attribute_name(:creator_id) %>:</strong></dt>
14
14
  <dd><%= @issue.creator.email %></dd>
15
+ <dt><strong><%= model_class.human_attribute_name(:assignee_id) %>:</strong></dt>
16
+ <dd><%= @issue.assignee.try(:email) %></dd>
15
17
  <dt><strong><%= model_class.human_attribute_name(:created_at) %>:</strong></dt>
16
18
  <dd><%=l @issue.created_at %></dd>
17
19
  <dt><strong><%= model_class.human_attribute_name(:updated_at) %>:</strong></dt>
@@ -0,0 +1,55 @@
1
+ <%= form_for phase, :html => { :class => "form-horizontal phase" } do |f| %>
2
+
3
+ <% if phase.errors.any? %>
4
+ <div id="error_expl" class="panel panel-danger">
5
+ <div class="panel-heading">
6
+ <h3 class="panel-title"><%= pluralize(phase.errors.count, "error") %> prohibited this phase from being saved:</h3>
7
+ </div>
8
+ <div class="panel-body">
9
+ <ul>
10
+ <% phase.errors.full_messages.each do |msg| %>
11
+ <li><%= msg %></li>
12
+ <% end %>
13
+ </ul>
14
+ </div>
15
+ </div>
16
+ <% end %>
17
+
18
+ <div class="form-group">
19
+ <%= f.label :project_id, :class => 'control-label col-lg-2' %>
20
+ <div class="col-lg-10">
21
+ <%= f.collection_select :project_id, Project.all, :id, :name, {}, :class=>"form-control" %>
22
+ </div>
23
+ <%=f.error_span(:project_id) %>
24
+ </div>
25
+ <div class="form-group">
26
+ <%= f.label :name, :class => 'control-label col-lg-2' %>
27
+ <div class="col-lg-10">
28
+ <%= f.text_field :name, :class => 'form-control' %>
29
+ </div>
30
+ <%=f.error_span(:name) %>
31
+ </div>
32
+ <div class="form-group">
33
+ <%= f.label :started_at, :class => 'control-label col-lg-2' %>
34
+ <div class="col-lg-10">
35
+ <%= f.datetime_select :started_at, :class => 'form-control' %>
36
+ </div>
37
+ <%=f.error_span(:started_at) %>
38
+ </div>
39
+ <div class="form-group">
40
+ <%= f.label :finished_at, :class => 'control-label col-lg-2' %>
41
+ <div class="col-lg-10">
42
+ <%= f.datetime_select :finished_at, :class => 'form-control' %>
43
+ </div>
44
+ <%=f.error_span(:finished_at) %>
45
+ </div>
46
+
47
+ <div class="form-group">
48
+ <div class="col-lg-offset-2 col-lg-10">
49
+ <%= f.submit nil, :class => 'btn btn-primary' %>
50
+ <%= link_to t('.cancel', :default => t("helpers.links.cancel")),
51
+ phases_path, :class => 'btn btn-default' %>
52
+ </div>
53
+ </div>
54
+
55
+ <% end %>
@@ -0,0 +1,31 @@
1
+ <%- model_class = Phase -%>
2
+ <table class="table table-striped">
3
+ <thead>
4
+ <tr>
5
+ <th><%= model_class.human_attribute_name(:project_id) %></th>
6
+ <th><%= model_class.human_attribute_name(:name) %></th>
7
+ <th><%= model_class.human_attribute_name(:started_at) %></th>
8
+ <th><%= model_class.human_attribute_name(:finished_at) %></th>
9
+ <th><%=t '.actions', :default => t("helpers.actions") %></th>
10
+ </tr>
11
+ </thead>
12
+ <tbody>
13
+ <% @phases.each do |phase| %>
14
+ <tr>
15
+ <td><%= phase.project.name %></td>
16
+ <td><%= link_to phase.name, phase_path(phase) %></td>
17
+ <td><%=l phase.started_at %></td>
18
+ <td><%=l phase.finished_at %></td>
19
+ <td>
20
+ <%= link_to t('.edit', :default => t("helpers.links.edit")),
21
+ edit_phase_path(phase), :class => 'btn btn-default btn-xs' %>
22
+ <%= link_to t('.destroy', :default => t("helpers.links.destroy")),
23
+ phase_path(phase),
24
+ :method => :delete,
25
+ :data => { :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')) },
26
+ :class => 'btn btn-xs btn-danger' %>
27
+ </td>
28
+ </tr>
29
+ <% end %>
30
+ </tbody>
31
+ </table>
@@ -0,0 +1,5 @@
1
+ <%- model_class = Phase -%>
2
+ <div class="page-header">
3
+ <h1><%=t '.title', :default => [:'helpers.titles.edit', 'Edit %{model}'], :model => model_class.model_name.human.titleize %></h1>
4
+ </div>
5
+ <%= render 'phases/form', phase: @phase %>
@@ -0,0 +1,9 @@
1
+ <%- model_class = Phase -%>
2
+ <div class="page-header">
3
+ <h1><%=t '.title', :default => model_class.model_name.human.pluralize.titleize %></h1>
4
+ </div>
5
+ <%= render 'phases/table' %>
6
+
7
+ <%= link_to t('.new', :default => t("helpers.links.new")),
8
+ new_phase_path,
9
+ :class => 'btn btn-primary' %>
@@ -0,0 +1,5 @@
1
+ <%- model_class = Phase -%>
2
+ <div class="page-header">
3
+ <h1><%=t '.title', :default => [:'helpers.titles.new', 'New %{model}'], :model => model_class.model_name.human.titleize %></h1>
4
+ </div>
5
+ <%= render 'phases/form', phase: @phase %>
@@ -0,0 +1,25 @@
1
+ <%- model_class = Phase -%>
2
+ <div class="page-header">
3
+ <h1><%=t '.title', :default => model_class.model_name.human.titleize %></h1>
4
+ </div>
5
+
6
+ <dl class="dl-horizontal">
7
+ <dt><strong><%= model_class.human_attribute_name(:project_id) %>:</strong></dt>
8
+ <dd><%= @phase.project.name %></dd>
9
+ <dt><strong><%= model_class.human_attribute_name(:name) %>:</strong></dt>
10
+ <dd><%= @phase.name %></dd>
11
+ <dt><strong><%= model_class.human_attribute_name(:started_at) %>:</strong></dt>
12
+ <dd><%=l @phase.started_at %></dd>
13
+ <dt><strong><%= model_class.human_attribute_name(:finished_at) %>:</strong></dt>
14
+ <dd><%=l @phase.finished_at %></dd>
15
+ </dl>
16
+
17
+ <%= link_to t('.back', :default => t("helpers.links.back")),
18
+ phases_path, :class => 'btn btn-default' %>
19
+ <%= link_to t('.edit', :default => t("helpers.links.edit")),
20
+ edit_phase_path(@phase), :class => 'btn btn-default' %>
21
+ <%= link_to t('.destroy', :default => t("helpers.links.destroy")),
22
+ phase_path(@phase),
23
+ :method => 'delete',
24
+ :data => { :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')) },
25
+ :class => 'btn btn-danger' %>
@@ -15,6 +15,10 @@ module Dummy
15
15
  g.test_framework :rspec
16
16
  g.factory_girl dir: 'spec/factories'
17
17
  end
18
+
19
+ config.time_zone = 'Tokyo'
20
+ config.active_record.default_timezone = :local
21
+
22
+ config.i18n.default_locale = :ja
18
23
  end
19
24
  end
20
-
@@ -0,0 +1,63 @@
1
+ ja:
2
+ errors:
3
+ messages:
4
+ not_found: "は見つかりませんでした"
5
+ # not_found: "not found"
6
+ already_confirmed: "は既に登録済みです"
7
+ # already_confirmed: "was already confirmed"
8
+ not_locked: "は凍結されていません"
9
+ # not_locked: "was not locked"
10
+
11
+ devise:
12
+ failure:
13
+ unauthenticated: 'ログインしてください。'
14
+ # unauthenticated: 'You need to sign in or sign up before continuing.'
15
+ unconfirmed: '本登録を行ってください。'
16
+ # unconfirmed: 'You have to confirm your account before continuing.'
17
+ locked: 'あなたのアカウントは凍結されています。'
18
+ # locked: 'Your account is locked.'
19
+ invalid: 'メールアドレスかパスワードが違います。'
20
+ # invalid: 'Invalid email or password.'
21
+ invalid_token: '認証キーが不正です。'
22
+ # invalid_token: 'Invalid authentication token.'
23
+ timeout: 'セッションがタイムアウトしました。もう一度ログインしてください。'
24
+ # timeout: 'Your session expired, please sign in again to continue.'
25
+ inactive: 'アカウントがアクティベートされていません。'
26
+ # inactive: 'Your account was not activated yet.'
27
+ sessions:
28
+ signed_in: 'ログインしました。'
29
+ # signed_in: 'Signed in successfully.'
30
+ signed_out: 'ログアウトしました。'
31
+ # signed_out: 'Signed out successfully.'
32
+ passwords:
33
+ send_instructions: 'パスワードのリセット方法を数分以内にメールでご連絡します。'
34
+ # send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes.'
35
+ updated: 'パスワードを変更しました。'
36
+ # updated: 'Your password was changed successfully. You are now signed in.'
37
+ confirmations:
38
+ send_instructions: '登録方法を数分以内にメールでご連絡します。'
39
+ # send_instructions: 'You will receive an email with instructions about how to confirm your account in a few minutes.'
40
+ confirmed: 'アカウントを登録しました。'
41
+ # confirmed: 'Your account was successfully confirmed. You are now signed in.'
42
+ registrations:
43
+ signed_up: 'アカウント登録を受け付けました。確認のメールをお送りします。'
44
+ # signed_up: 'You have signed up successfully. If enabled, a confirmation was sent to your e-mail.'
45
+ updated: 'アカウントを更新しました。'
46
+ # updated: 'You updated your account successfully.'
47
+ destroyed: 'アカウントを削除しました。またのご利用をお待ちしております。'
48
+ # destroyed: 'Bye! Your account was successfully cancelled. We hope to see you again soon.'
49
+ unlocks:
50
+ send_instructions: 'アカウントの凍結解除方法を数分以内にメールでご連絡します。'
51
+ # send_instructions: 'You will receive an email with instructions about how to unlock your account in a few minutes.'
52
+ unlocked: 'アカウントを凍結解除しました。'
53
+ # unlocked: 'Your account was successfully unlocked. You are now signed in.'
54
+ mailer:
55
+ confirmation_instructions:
56
+ subject: 'アカウントの登録方法'
57
+ # subject: 'Confirmation instructions'
58
+ reset_password_instructions:
59
+ subject: 'パスワードの再設定'
60
+ # subject: 'Reset password instructions'
61
+ unlock_instructions:
62
+ subject: 'アカウントの凍結解除'
63
+ # subject: 'Unlock Instructions'
@@ -0,0 +1,202 @@
1
+ ---
2
+ ja:
3
+ activerecord:
4
+ errors:
5
+ messages:
6
+ record_invalid: "バリデーションに失敗しました: %{errors}"
7
+ restrict_dependent_destroy:
8
+ has_one: "%{record}が存在しているので削除できません"
9
+ has_many: "%{record}が存在しているので削除できません"
10
+ date:
11
+ abbr_day_names:
12
+ - 日
13
+ - 月
14
+ - 火
15
+ - 水
16
+ - 木
17
+ - 金
18
+ - 土
19
+ abbr_month_names:
20
+ -
21
+ - 1月
22
+ - 2月
23
+ - 3月
24
+ - 4月
25
+ - 5月
26
+ - 6月
27
+ - 7月
28
+ - 8月
29
+ - 9月
30
+ - 10月
31
+ - 11月
32
+ - 12月
33
+ day_names:
34
+ - 日曜日
35
+ - 月曜日
36
+ - 火曜日
37
+ - 水曜日
38
+ - 木曜日
39
+ - 金曜日
40
+ - 土曜日
41
+ formats:
42
+ default: "%Y/%m/%d"
43
+ long: "%Y年%m月%d日(%a)"
44
+ short: "%m/%d"
45
+ month_names:
46
+ -
47
+ - 1月
48
+ - 2月
49
+ - 3月
50
+ - 4月
51
+ - 5月
52
+ - 6月
53
+ - 7月
54
+ - 8月
55
+ - 9月
56
+ - 10月
57
+ - 11月
58
+ - 12月
59
+ order:
60
+ - :year
61
+ - :month
62
+ - :day
63
+ datetime:
64
+ distance_in_words:
65
+ about_x_hours:
66
+ one: 約1時間
67
+ other: 約%{count}時間
68
+ about_x_months:
69
+ one: 約1ヶ月
70
+ other: 約%{count}ヶ月
71
+ about_x_years:
72
+ one: 約1年
73
+ other: 約%{count}年
74
+ almost_x_years:
75
+ one: 1年弱
76
+ other: "%{count}年弱"
77
+ half_a_minute: 30秒前後
78
+ less_than_x_minutes:
79
+ one: 1分以内
80
+ other: "%{count}分未満"
81
+ less_than_x_seconds:
82
+ one: 1秒以内
83
+ other: "%{count}秒未満"
84
+ over_x_years:
85
+ one: 1年以上
86
+ other: "%{count}年以上"
87
+ x_days:
88
+ one: 1日
89
+ other: "%{count}日"
90
+ x_minutes:
91
+ one: 1分
92
+ other: "%{count}分"
93
+ x_months:
94
+ one: 1ヶ月
95
+ other: "%{count}ヶ月"
96
+ x_seconds:
97
+ one: 1秒
98
+ other: "%{count}秒"
99
+ prompts:
100
+ day: 日
101
+ hour: 時
102
+ minute: 分
103
+ month: 月
104
+ second: 秒
105
+ year: 年
106
+ errors:
107
+ format: "%{attribute}%{message}"
108
+ messages:
109
+ accepted: を受諾してください
110
+ blank: を入力してください
111
+ present: は入力しないでください
112
+ confirmation: と%{attribute}の入力が一致しません
113
+ empty: を入力してください
114
+ equal_to: は%{count}にしてください
115
+ even: は偶数にしてください
116
+ exclusion: は予約されています
117
+ greater_than: は%{count}より大きい値にしてください
118
+ greater_than_or_equal_to: は%{count}以上の値にしてください
119
+ inclusion: は一覧にありません
120
+ invalid: は不正な値です
121
+ less_than: は%{count}より小さい値にしてください
122
+ less_than_or_equal_to: は%{count}以下の値にしてください
123
+ model_invalid: "バリデーションに失敗しました: %{errors}"
124
+ not_a_number: は数値で入力してください
125
+ not_an_integer: は整数で入力してください
126
+ odd: は奇数にしてください
127
+ required: を入力してください
128
+ taken: はすでに存在します
129
+ too_long: は%{count}文字以内で入力してください
130
+ too_short: は%{count}文字以上で入力してください
131
+ wrong_length: は%{count}文字で入力してください
132
+ other_than: は%{count}以外の値にしてください
133
+ template:
134
+ body: 次の項目を確認してください
135
+ header:
136
+ one: "%{model}にエラーが発生しました"
137
+ other: "%{model}に%{count}個のエラーが発生しました"
138
+ helpers:
139
+ select:
140
+ prompt: 選択してください
141
+ submit:
142
+ create: 登録する
143
+ submit: 保存する
144
+ update: 更新する
145
+ number:
146
+ currency:
147
+ format:
148
+ delimiter: ","
149
+ format: "%n%u"
150
+ precision: 0
151
+ separator: "."
152
+ significant: false
153
+ strip_insignificant_zeros: false
154
+ unit: 円
155
+ format:
156
+ delimiter: ","
157
+ precision: 3
158
+ separator: "."
159
+ significant: false
160
+ strip_insignificant_zeros: false
161
+ human:
162
+ decimal_units:
163
+ format: "%n %u"
164
+ units:
165
+ billion: 十億
166
+ million: 百万
167
+ quadrillion: 千兆
168
+ thousand: 千
169
+ trillion: 兆
170
+ unit: ''
171
+ format:
172
+ delimiter: ''
173
+ precision: 3
174
+ significant: true
175
+ strip_insignificant_zeros: true
176
+ storage_units:
177
+ format: "%n%u"
178
+ units:
179
+ byte: バイト
180
+ gb: GB
181
+ kb: KB
182
+ mb: MB
183
+ tb: TB
184
+ percentage:
185
+ format:
186
+ delimiter: ''
187
+ format: "%n%"
188
+ precision:
189
+ format:
190
+ delimiter: ''
191
+ support:
192
+ array:
193
+ last_word_connector: と
194
+ two_words_connector: と
195
+ words_connector: と
196
+ time:
197
+ am: 午前
198
+ formats:
199
+ default: "%Y/%m/%d %H:%M:%S"
200
+ long: "%Y年%m月%d日(%a) %H時%M分%S秒 %z"
201
+ short: "%y/%m/%d %H:%M"
202
+ pm: 午後
@@ -2,6 +2,7 @@ Rails.application.routes.draw do
2
2
  devise_for :users
3
3
  resources :projects
4
4
  resources :project_assignments
5
+ resources :phases
5
6
  resources :issues
6
7
  root to: 'projects#index'
7
8
  end
data/example/db/schema.rb CHANGED
@@ -23,6 +23,13 @@ ActiveRecord::Schema.define(version: 20161013025452) do
23
23
  end
24
24
  add_foreign_key :projects, :users, column: 'owner_id'
25
25
 
26
+ create_table :phases do |t|
27
+ t.references :project , null: false, foreign_key: true
28
+ t.string :name , null: false
29
+ t.datetime :started_at , null: false
30
+ t.datetime :finished_at, null: false
31
+ end
32
+
26
33
  create_table :project_assignments do |t|
27
34
  t.references :project, null: false, foreign_key: true
28
35
  t.references :user , null: false, foreign_key: true
@@ -36,8 +43,10 @@ ActiveRecord::Schema.define(version: 20161013025452) do
36
43
  t.string :title, null: false
37
44
  t.integer :status, null: false
38
45
  t.references :creator, null: false
46
+ t.references :assignee, null: true
39
47
  t.datetime :created_at, null: false
40
48
  t.datetime :updated_at, null: false
41
49
  end
42
50
  add_foreign_key :issues, :users, column: 'creator_id'
51
+ add_foreign_key :issues, :users, column: 'assignee_id'
43
52
  end
@@ -0,0 +1,170 @@
1
+ require 'rails_helper'
2
+
3
+ # This spec was generated by rspec-rails when you ran the scaffold generator.
4
+ # It demonstrates how one might use RSpec to specify the controller code that
5
+ # was generated by Rails when you ran the scaffold generator.
6
+ #
7
+ # It assumes that the implementation code is generated by the rails scaffold
8
+ # generator. If you are using any extension libraries to generate different
9
+ # controller code, this generated spec may or may not pass.
10
+ #
11
+ # It only uses APIs available in rails and/or rspec-rails. There are a number
12
+ # of tools you can use to make these specs even more expressive, but we're
13
+ # sticking to rails and rspec-rails APIs to keep things simple and stable.
14
+ #
15
+ # Compared to earlier versions of this generator, there is very limited use of
16
+ # stubs and message expectations in this spec. Stubs are only used when there
17
+ # is no simpler way to get a handle on the object needed for the example.
18
+ # Message expectations are only used when there is no simpler way to specify
19
+ # that an instance is receiving a specific message.
20
+
21
+ RSpec.describe PhasesController, type: :controller do
22
+
23
+ let(:project){ FactoryGirl.create(:project, owner: user) }
24
+ let(:user){ FactoryGirl.create(:user) }
25
+ before{ devise_user_login(user) }
26
+
27
+ let(:phase){ FactoryGirl.create(:phase, project: project) }
28
+
29
+ # This should return the minimal set of attributes required to create a valid
30
+ # Phase. As you add validations to Phase, be sure to
31
+ # adjust the attributes here as well.
32
+ let(:valid_parameters) {
33
+ FactoryGirl.attributes_for(:phase).merge(project_id: project.id)
34
+ }
35
+
36
+ let(:invalid_parameters) {
37
+ valid_parameters.symbolize_keys.merge(name: '')
38
+ }
39
+
40
+ # This should return the minimal set of values that should be in the session
41
+ # in order to pass any filters (e.g. authentication) defined in
42
+ # PhasesController. Be sure to keep this updated too.
43
+ let(:valid_session) { {} }
44
+
45
+ describe "GET #index" do
46
+ it "assigns all phases as @phases" do
47
+ get :index, params: {}, session: valid_session
48
+ expect(assigns(:phases)).to eq([phase])
49
+ end
50
+ end
51
+
52
+ describe "GET #show" do
53
+ it "assigns the requested phase as @phase" do
54
+ phase # To create phase
55
+ get :show, params: {:id => phase.to_param}, session: valid_session
56
+ expect(assigns(:phase)).to eq(phase)
57
+ end
58
+ end
59
+
60
+ describe "GET #new" do
61
+ it "assigns a new phase as @phase" do
62
+ get :new, params: {}, session: valid_session
63
+ expect(assigns(:phase)).to be_a_new(Phase)
64
+ end
65
+ end
66
+
67
+ describe "GET #edit" do
68
+ it "assigns the requested phase as @phase" do
69
+ phase # To create phase
70
+ get :edit, params: {:id => phase.to_param}, session: valid_session
71
+ expect(assigns(:phase)).to eq(phase)
72
+ end
73
+ end
74
+
75
+ describe "POST #create" do
76
+ context "with valid params" do
77
+ it "creates a new Phase" do
78
+ expect {
79
+ post :create, params: {:phase => valid_parameters}, session: valid_session
80
+ }.to change(Phase, :count).by(1)
81
+ end
82
+
83
+ it "assigns a newly created phase as @phase" do
84
+ post :create, params: {:phase => valid_parameters}, session: valid_session
85
+ expect(assigns(:phase)).to be_a(Phase)
86
+ expect(assigns(:phase)).to be_persisted
87
+ end
88
+
89
+ it "redirects to the created phase" do
90
+ post :create, params: {:phase => valid_parameters}, session: valid_session
91
+ expect(response).to redirect_to(Phase.last)
92
+ end
93
+ end
94
+
95
+ context "with invalid params" do
96
+ it "assigns a newly created but unsaved phase as @phase" do
97
+ post :create, params: {:phase => invalid_parameters}, session: valid_session
98
+ expect(assigns(:phase)).to be_a_new(Phase)
99
+ end
100
+
101
+ it "re-renders the 'new' template" do
102
+ post :create, params: {:phase => invalid_parameters}, session: valid_session
103
+ expect(response).to render_template("new")
104
+ end
105
+ end
106
+ end
107
+
108
+ describe "PUT #update" do
109
+ context "with valid params" do
110
+ let(:new_name){ valid_parameters[:name].succ }
111
+ let(:new_started_at){ valid_parameters[:started_at].succ }
112
+ let(:new_finished_at){ valid_parameters[:finished_at].succ }
113
+
114
+ let(:new_parameters) {
115
+ valid_parameters.merge(name: new_name, started_at: new_started_at, finished_at: new_finished_at)
116
+ }
117
+
118
+ it "updates the requested phase" do
119
+ phase # To create phase
120
+ put :update, params: {:id => phase.to_param, :phase => new_parameters}, session: valid_session
121
+ phase.reload
122
+ expect(phase.name).to eq new_name
123
+ expect(phase.started_at).to eq new_started_at
124
+ expect(phase.finished_at).to eq new_finished_at
125
+ end
126
+
127
+ it "assigns the requested phase as @phase" do
128
+ phase # To create phase
129
+ put :update, params: {:id => phase.to_param, :phase => new_parameters}, session: valid_session
130
+ expect(assigns(:phase)).to eq(phase)
131
+ end
132
+
133
+ it "redirects to the phase" do
134
+ phase # To create phase
135
+ put :update, params: {:id => phase.to_param, :phase => new_parameters}, session: valid_session
136
+ expect(response).to redirect_to(phase)
137
+ end
138
+ end
139
+
140
+ context "with invalid params" do
141
+ it "assigns the phase as @phase" do
142
+ phase # To create phase
143
+ put :update, params: {:id => phase.to_param, :phase => invalid_parameters}, session: valid_session
144
+ expect(assigns(:phase)).to eq(phase)
145
+ end
146
+
147
+ it "re-renders the 'edit' template" do
148
+ phase # To create phase
149
+ put :update, params: {:id => phase.to_param, :phase => invalid_parameters}, session: valid_session
150
+ expect(response).to render_template("edit")
151
+ end
152
+ end
153
+ end
154
+
155
+ describe "DELETE #destroy" do
156
+ it "destroys the requested phase" do
157
+ phase # To create phase
158
+ expect {
159
+ delete :destroy, params: {:id => phase.to_param}, session: valid_session
160
+ }.to change(Phase, :count).by(-1)
161
+ end
162
+
163
+ it "redirects to the phases list" do
164
+ phase # To create phase
165
+ delete :destroy, params: {:id => phase.to_param}, session: valid_session
166
+ expect(response).to redirect_to(phases_url)
167
+ end
168
+ end
169
+
170
+ end
@@ -4,5 +4,6 @@ FactoryGirl.define do
4
4
  title "issue1"
5
5
  status :draft
6
6
  association :creator, factory: :user
7
+ assignee nil
7
8
  end
8
9
  end
@@ -0,0 +1,8 @@
1
+ FactoryGirl.define do
2
+ factory :phase do
3
+ association :project, factory: :project
4
+ name "phase1"
5
+ started_at "2020-01-29 02:50:00 +09:00"
6
+ finished_at "2020-01-29 16:40:00 +09:00"
7
+ end
8
+ end
@@ -2,7 +2,7 @@ FactoryGirl.define do
2
2
  factory :project_assignment do
3
3
  association :project, factory: :project
4
4
  association :user, factory: :user
5
- started_at "2020-03-22 09:50:00"
6
- finished_at "2020-03-22 23:40:00"
5
+ started_at "2020-03-22 09:50:00 +09:00"
6
+ finished_at "2020-03-22 23:40:00 +09:00"
7
7
  end
8
8
  end
@@ -0,0 +1,39 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe PhasesController, type: :routing do
4
+ describe "routing" do
5
+
6
+ it "routes to #index" do
7
+ expect(:get => "/phases").to route_to("phases#index")
8
+ end
9
+
10
+ it "routes to #new" do
11
+ expect(:get => "/phases/new").to route_to("phases#new")
12
+ end
13
+
14
+ it "routes to #show" do
15
+ expect(:get => "/phases/1").to route_to("phases#show", :id => "1")
16
+ end
17
+
18
+ it "routes to #edit" do
19
+ expect(:get => "/phases/1/edit").to route_to("phases#edit", :id => "1")
20
+ end
21
+
22
+ it "routes to #create" do
23
+ expect(:post => "/phases").to route_to("phases#create")
24
+ end
25
+
26
+ it "routes to #update via PUT" do
27
+ expect(:put => "/phases/1").to route_to("phases#update", :id => "1")
28
+ end
29
+
30
+ it "routes to #update via PATCH" do
31
+ expect(:patch => "/phases/1").to route_to("phases#update", :id => "1")
32
+ end
33
+
34
+ it "routes to #destroy" do
35
+ expect(:delete => "/phases/1").to route_to("phases#destroy", :id => "1")
36
+ end
37
+
38
+ end
39
+ end
@@ -15,6 +15,7 @@ RSpec.describe "issues/edit", type: :view do
15
15
  assert_select "input#issue_title[name=?]", "issue[title]"
16
16
  assert_select "select#issue_status[name=?]", "issue[status]"
17
17
  assert_select "select#issue_creator_id[name=?]", "issue[creator_id]"
18
+ assert_select "select#issue_assignee_id[name=?]", "issue[assignee_id]"
18
19
  end
19
20
  end
20
21
  end
@@ -17,5 +17,6 @@ RSpec.describe "issues/index", type: :view do
17
17
  assert_select "tr>td", :text => 'issue2', :count => 1
18
18
  assert_select "tr>td", :text => 'Draft', :count => 2
19
19
  assert_select "tr>td", :text => 'user1@example.com', :count => 2
20
+ assert_select "tr>td", :text => 'user1@example.com', :count => 2
20
21
  end
21
22
  end
@@ -15,6 +15,7 @@ RSpec.describe "issues/new", type: :view do
15
15
  assert_select "input#issue_title[name=?]", "issue[title]"
16
16
  assert_select "select#issue_status[name=?]", "issue[status]"
17
17
  assert_select "select#issue_creator_id[name=?]", "issue[creator_id]"
18
+ assert_select "select#issue_assignee_id[name=?]", "issue[assignee_id]"
18
19
  end
19
20
  end
20
21
  end
@@ -13,5 +13,6 @@ RSpec.describe "issues/show", type: :view do
13
13
  expect(rendered).to match(/issue1/)
14
14
  expect(rendered).to match(/Draft/)
15
15
  expect(rendered).to match(/user1@example.com/)
16
+ expect(rendered).to match(/user1@example.com/)
16
17
  end
17
18
  end
@@ -0,0 +1,20 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe "phases/edit", type: :view do
4
+ let(:project){ FactoryGirl.create(:project, owner: user) }
5
+ let(:user){ FactoryGirl.create(:user) }
6
+ before(:each) do
7
+ @phase = assign(:phase, FactoryGirl.create(:phase, project: project))
8
+ end
9
+
10
+ it "renders the edit phase form" do
11
+ render
12
+
13
+ assert_select "form[action=?][method=?]", phase_path(@phase), "post" do
14
+ assert_select "select#phase_project_id[name=?]", "phase[project_id]"
15
+ assert_select "input#phase_name[name=?]", "phase[name]"
16
+ assert_select_datetime_field :phase, :started_at
17
+ assert_select_datetime_field :phase, :finished_at
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe "phases/index", type: :view do
4
+ let(:project){ FactoryGirl.create(:project, owner: user) }
5
+ let(:user){ FactoryGirl.create(:user) }
6
+ before(:each) do
7
+ assign(:phases, [
8
+ FactoryGirl.create(:phase, name: 'phase1', project: project),
9
+ FactoryGirl.create(:phase, name: 'phase2', project: project),
10
+ ])
11
+ end
12
+
13
+ it "renders a list of phases" do
14
+ render
15
+ assert_select "tr>td", :text => 'project1', :count => 2
16
+ assert_select "tr>td", :text => 'phase1', :count => 1
17
+ assert_select "tr>td", :text => 'phase2', :count => 1
18
+ assert_select "tr>td", :text => localize(Time.zone.parse('2020-01-29 02:50:00 +09:00')), :count => 2
19
+ assert_select "tr>td", :text => localize(Time.zone.parse('2020-01-29 16:40:00 +09:00')), :count => 2
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe "phases/new", type: :view do
4
+ let(:project){ FactoryGirl.create(:project, owner: user) }
5
+ let(:user){ FactoryGirl.create(:user) }
6
+ before(:each) do
7
+ assign(:phase, FactoryGirl.build(:phase, project: project))
8
+ end
9
+
10
+ it "renders new phase form" do
11
+ render
12
+
13
+ assert_select "form[action=?][method=?]", phases_path, "post" do
14
+ assert_select "select#phase_project_id[name=?]", "phase[project_id]"
15
+ assert_select "input#phase_name[name=?]", "phase[name]"
16
+ assert_select_datetime_field :phase, :started_at
17
+ assert_select_datetime_field :phase, :finished_at
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe "phases/show", type: :view do
4
+ let(:project){ FactoryGirl.create(:project, owner: user) }
5
+ let(:user){ FactoryGirl.create(:user) }
6
+ before(:each) do
7
+ @phase = assign(:phase, FactoryGirl.create(:phase, project: project))
8
+ end
9
+
10
+ it "renders attributes in <p>" do
11
+ render
12
+ expect(rendered).to match(/project1/)
13
+ expect(rendered).to match(/phase1/)
14
+ expect(rendered).to match(Regexp.new(Regexp.escape(localize(Time.zone.parse('2020-01-29 02:50:00 +09:00')))))
15
+ expect(rendered).to match(Regexp.new(Regexp.escape(localize(Time.zone.parse('2020-01-29 16:40:00 +09:00')))))
16
+ end
17
+ end
@@ -14,7 +14,7 @@ RSpec.describe "project_assignments/index", type: :view do
14
14
  render
15
15
  assert_select "tr>td", :text => 'project1', :count => 2
16
16
  assert_select "tr>td", :text => 'user1@example.com', :count => 2
17
- assert_select "tr>td", :text => localize(Time.zone.parse('2020-03-22 09:50:00')), :count => 2
18
- assert_select "tr>td", :text => localize(Time.zone.parse('2020-03-22 23:40:00')), :count => 2
17
+ assert_select "tr>td", :text => localize(Time.zone.parse('2020-03-22 09:50:00 +09:00')), :count => 2
18
+ assert_select "tr>td", :text => localize(Time.zone.parse('2020-03-22 23:40:00 +09:00')), :count => 2
19
19
  end
20
20
  end
@@ -11,7 +11,7 @@ RSpec.describe "project_assignments/show", type: :view do
11
11
  render
12
12
  expect(rendered).to match(/project1/)
13
13
  expect(rendered).to match(/user1@example.com/)
14
- expect(rendered).to match(Regexp.new(Regexp.escape(localize(Time.zone.parse('2020-03-22 09:50:00')))))
15
- expect(rendered).to match(Regexp.new(Regexp.escape(localize(Time.zone.parse('2020-03-22 23:40:00')))))
14
+ expect(rendered).to match(Regexp.new(Regexp.escape(localize(Time.zone.parse('2020-03-22 09:50:00 +09:00')))))
15
+ expect(rendered).to match(Regexp.new(Regexp.escape(localize(Time.zone.parse('2020-03-22 23:40:00 +09:00')))))
16
16
  end
17
17
  end
@@ -83,7 +83,7 @@ module ModelBase
83
83
  when :integer then idx
84
84
  when :float then idx + 0.5
85
85
  when :decimal then "#{idx}.99"
86
- when :datetime, :timestamp, :time then sample_time(idx).to_s(:db)
86
+ when :datetime, :timestamp, :time then sample_time(idx).strftime('%F %T %:z')
87
87
  when :date then sample_time(idx).to_date.to_s(:db)
88
88
  when :string then
89
89
  case name
@@ -156,8 +156,8 @@ module ModelBase
156
156
  def render(form_name, target_name, options = {})
157
157
  html = options.delete(:html) || {}
158
158
  html_exp = html.empty? ? nil : html.inspect.gsub(/\A\{|\}\z/, '')
159
- options.update(include_blank: !column_attr.required?)
160
- options_exp = {}.inspect
159
+ options.update(include_blank: true) if !column_attr.required?
160
+ options_exp = '{%s}' % options.map{|k,v| "#{k}: #{v.inspect}"}.join(', ')
161
161
  r = render_core(form_name, target_name)
162
162
  r << ", #{options_exp}"
163
163
  r << ", #{html_exp}" unless html.empty?
@@ -1,3 +1,3 @@
1
1
  module ModelBase
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
@@ -15,7 +15,11 @@
15
15
  <%- if column.linkable? -%>
16
16
  <td><%%= link_to <%= model.full_resource_name %>.<%= column.name %>, <%= singular_controller_routing_path %>_path(<%= model.full_resource_name %>) %></td>
17
17
  <%- elsif tcol = column.ref_model.try(:title_column) -%>
18
+ <%- if column.required? -%>
18
19
  <td><%%= <%= model.full_resource_name %>.<%= column.reference.name %>.<%= tcol.name %> %></td>
20
+ <%- else -%>
21
+ <td><%%= <%= model.full_resource_name %>.<%= column.reference.name %>.try(:<%= tcol.name %>) %></td>
22
+ <%- end -%>
19
23
  <%- elsif column.enumerized? -%>
20
24
  <td><%%= <%= model.full_resource_name %>.<%= column.name %>_text %></td>
21
25
  <%- elsif column.to_be_localized? -%>
@@ -7,7 +7,11 @@
7
7
  <%- model.columns_for(:show).each do |column| -%>
8
8
  <dt><strong><%%= model_class.human_attribute_name(:<%= column.name %>) %>:</strong></dt>
9
9
  <%- if tcol = column.ref_model.try(:title_column) -%>
10
+ <%- if column.required? -%>
10
11
  <dd><%%= @<%= model.full_resource_name %>.<%= column.reference.name %>.<%= tcol.name %> %></dd>
12
+ <%- else -%>
13
+ <dd><%%= @<%= model.full_resource_name %>.<%= column.reference.name %>.try(:<%= tcol.name %>) %></dd>
14
+ <%- end -%>
11
15
  <%- elsif column.enumerized? -%>
12
16
  <dd><%%= @<%= model.full_resource_name %>.<%= column.name %>_text %></dd>
13
17
  <%- elsif column.to_be_localized? -%>
@@ -2,7 +2,11 @@ FactoryGirl.define do
2
2
  factory :<%= model.full_resource_name %> do
3
3
  <%- model.columns_for(:factory).each do |col| -%>
4
4
  <%- if col.reference -%>
5
+ <%- if col.required? -%>
5
6
  association :<%= col.reference.name %>, factory: :<%= col.ref_model.full_resource_name %>
7
+ <%- else -%>
8
+ <%= col.reference.name %> nil
9
+ <%- end -%>
6
10
  <%- else -%>
7
11
  <%= col.name %> <%= col.sample_value(context: :factory).inspect %>
8
12
  <%- end -%>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: model_base_generators
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - akm
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-24 00:00:00.000000000 Z
11
+ date: 2016-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -142,10 +142,12 @@ files:
142
142
  - example/app/controllers/concerns/.keep
143
143
  - example/app/controllers/concerns/authentication.rb
144
144
  - example/app/controllers/issues_controller.rb
145
+ - example/app/controllers/phases_controller.rb
145
146
  - example/app/controllers/project_assignments_controller.rb
146
147
  - example/app/controllers/projects_controller.rb
147
148
  - example/app/helpers/application_helper.rb
148
149
  - example/app/helpers/issues_helper.rb
150
+ - example/app/helpers/phases_helper.rb
149
151
  - example/app/helpers/projects_helper.rb
150
152
  - example/app/jobs/application_job.rb
151
153
  - example/app/mailers/application_mailer.rb
@@ -153,11 +155,13 @@ files:
153
155
  - example/app/models/application_record.rb
154
156
  - example/app/models/concerns/.keep
155
157
  - example/app/models/issue.rb
158
+ - example/app/models/phase.rb
156
159
  - example/app/models/project.rb
157
160
  - example/app/models/project_assignment.rb
158
161
  - example/app/models/user.rb
159
162
  - example/app/validations/ar_internal_metadatum_validation.rb
160
163
  - example/app/validations/issue_validation.rb
164
+ - example/app/validations/phase_validation.rb
161
165
  - example/app/validations/project_assignment_validation.rb
162
166
  - example/app/validations/project_validation.rb
163
167
  - example/app/validations/user_validation.rb
@@ -170,6 +174,12 @@ files:
170
174
  - example/app/views/layouts/application.html.erb
171
175
  - example/app/views/layouts/mailer.html.erb
172
176
  - example/app/views/layouts/mailer.text.erb
177
+ - example/app/views/phases/_form.html.erb
178
+ - example/app/views/phases/_table.html.erb
179
+ - example/app/views/phases/edit.html.erb
180
+ - example/app/views/phases/index.html.erb
181
+ - example/app/views/phases/new.html.erb
182
+ - example/app/views/phases/show.html.erb
173
183
  - example/app/views/project_assignments/_form.html.erb
174
184
  - example/app/views/project_assignments/_table.html.erb
175
185
  - example/app/views/project_assignments/edit.html.erb
@@ -209,7 +219,9 @@ files:
209
219
  - example/config/initializers/session_store.rb
210
220
  - example/config/initializers/wrap_parameters.rb
211
221
  - example/config/locales/devise.en.yml
222
+ - example/config/locales/devise.ja.yml
212
223
  - example/config/locales/en.yml
224
+ - example/config/locales/rails.ja.yml
213
225
  - example/config/puma.rb
214
226
  - example/config/routes.rb
215
227
  - example/config/secrets.yml
@@ -224,14 +236,17 @@ files:
224
236
  - example/public/apple-touch-icon.png
225
237
  - example/public/favicon.ico
226
238
  - example/spec/controllers/issues_controller_spec.rb
239
+ - example/spec/controllers/phases_controller_spec.rb
227
240
  - example/spec/controllers/project_assignments_controller_spec.rb
228
241
  - example/spec/controllers/projects_controller_spec.rb
229
242
  - example/spec/factories/issues.rb
243
+ - example/spec/factories/phases.rb
230
244
  - example/spec/factories/project_assignments.rb
231
245
  - example/spec/factories/projects.rb
232
246
  - example/spec/factories/users.rb
233
247
  - example/spec/rails_helper.rb
234
248
  - example/spec/routing/issues_routing_spec.rb
249
+ - example/spec/routing/phases_routing_spec.rb
235
250
  - example/spec/routing/project_assignments_routing_spec.rb
236
251
  - example/spec/routing/projects_routing_spec.rb
237
252
  - example/spec/spec_helper.rb
@@ -242,6 +257,10 @@ files:
242
257
  - example/spec/views/issues/index.html.erb_spec.rb
243
258
  - example/spec/views/issues/new.html.erb_spec.rb
244
259
  - example/spec/views/issues/show.html.erb_spec.rb
260
+ - example/spec/views/phases/edit.html.erb_spec.rb
261
+ - example/spec/views/phases/index.html.erb_spec.rb
262
+ - example/spec/views/phases/new.html.erb_spec.rb
263
+ - example/spec/views/phases/show.html.erb_spec.rb
245
264
  - example/spec/views/project_assignments/edit.html.erb_spec.rb
246
265
  - example/spec/views/project_assignments/index.html.erb_spec.rb
247
266
  - example/spec/views/project_assignments/new.html.erb_spec.rb