tasuku 0.1.1 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/app/controllers/tasuku/taskables/code/responses_controller.rb +32 -0
- data/app/controllers/tasuku/taskables/questions/answers_controller.rb +1 -0
- data/app/helpers/tasuku/url_helper.rb +11 -0
- data/app/models/tasuku/task.rb +1 -0
- data/app/models/tasuku/task_requirement.rb +5 -0
- data/app/models/tasuku/taskables/code/request.rb +7 -0
- data/app/models/tasuku/taskables/code/response.rb +22 -0
- data/app/models/tasuku/taskables/code.rb +7 -0
- data/app/models/tasuku/taskables/question/option.rb +1 -0
- data/app/views/tasuku/taskables/_illustration.html.erb +7 -0
- data/app/views/tasuku/taskables/code/requests/_request.html.erb +9 -0
- data/app/views/tasuku/taskables/code/responses/_form.html.erb +5 -0
- data/app/views/tasuku/taskables/image/requests/_request.html.erb +1 -3
- data/app/views/tasuku/taskables/questions/_question.html.erb +2 -3
- data/app/views/tasuku/taskables/questions/answers/_form.html.erb +3 -1
- data/app/views/tasuku/taskables/text/requests/_request.html.erb +1 -3
- data/app/views/tasuku/taskables/url/requests/_request.html.erb +1 -3
- data/config/locales/en.yml +155 -11
- data/config/locales/nb.yml +14 -4
- data/config/routes.rb +6 -0
- data/db/migrate/20140611084458_add_video_urls.rb +8 -0
- data/db/migrate/20140813073552_create_tasuku_taskables_code_requests.rb +10 -0
- data/db/migrate/20140813075643_create_tasuku_taskables_code_responses.rb +11 -0
- data/db/migrate/20140813080116_add_reply_to_option.rb +5 -0
- data/db/migrate/20140910112050_create_tasuku_task_requirements.rb +10 -0
- data/db/migrate/20140926105940_add_description_to_code_requests.rb +5 -0
- data/lib/tasuku/concerns/illustratable.rb +3 -0
- data/lib/tasuku/concerns/models/requirables/inverse_requirable.rb +12 -0
- data/lib/tasuku/concerns/models/requirables/requirable.rb +35 -0
- data/lib/tasuku/concerns/models/requirables.rb +4 -0
- data/lib/tasuku/concerns/models/taskables/code/request.rb +19 -0
- data/lib/tasuku/concerns/models/taskables/code.rb +3 -0
- data/lib/tasuku/concerns/models/taskables.rb +1 -0
- data/lib/tasuku/concerns/models.rb +1 -0
- data/lib/tasuku/seeds.rb +3 -0
- data/lib/tasuku/version.rb +1 -1
- data/spec/controllers/tasuku/taskables/code/responses_controller_spec.rb +38 -0
- data/spec/controllers/tasuku/taskables/questions/answers_controller_spec.rb +21 -0
- data/spec/dummy/app/controllers/application_controller.rb +1 -0
- data/spec/dummy/config/routes.rb +2 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +30 -1
- data/spec/dummy/db/seeds.rb +1 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +7584 -57
- data/spec/dummy/log/test.log +37002 -13558
- data/spec/dummy/public/uploads/{tasks/taskables/image/request/image/1 → tasuku/taskables/image/request/image/2}/doge.jpg +0 -0
- data/spec/dummy/public/uploads/{tasks/taskables/image/response/image/1 → tasuku/taskables/question/image/2}/doge.jpg +0 -0
- data/spec/dummy/public/uploads/{tasks/taskables/question/image/1 → tasuku/taskables/text/request/image/2}/doge.jpg +0 -0
- data/spec/dummy/public/uploads/{tasks/taskables/text/request/image/1 → tasuku/taskables/url/request/image/2}/doge.jpg +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/factories/tasuku_responses.rb +6 -0
- data/spec/factories/tasuku_task_requirements.rb +8 -0
- data/spec/factories/tasuku_taskables_code_requests.rb +8 -0
- data/spec/factories/tasuku_taskables_code_responses.rb +6 -0
- data/spec/factories/tasuku_taskables_question_options.rb +1 -0
- data/spec/models/tasuku/task_requirement_spec.rb +9 -0
- data/spec/models/tasuku/task_spec.rb +42 -0
- data/spec/models/tasuku/taskables/code/request_spec.rb +6 -0
- data/spec/models/tasuku/taskables/code/response_spec.rb +27 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/support/shared_examples_for_redirectable.rb +9 -0
- data/spec/views/tasuku/taskables/code/requests/_request.html.erb_spec.rb +5 -0
- data/spec/views/tasuku/taskables/illustration_spec.rb +19 -0
- data/spec/views/tasuku/taskables/image/requests/_request.html.erb_spec.rb +8 -9
- data/spec/views/tasuku/taskables/questions/_question.html.erb_spec.rb +8 -9
- data/spec/views/tasuku/taskables/text/requests/_request.html.erb_spec.rb +8 -9
- data/spec/views/tasuku/taskables/url/requests/_request.html.erb_spec.rb +8 -9
- metadata +110 -31
- data/lib/tasks/concerns/models/taskables/image.rb +0 -3
- data/lib/tasks/concerns/models/taskables/text.rb +0 -3
- data/lib/tasks/concerns/models/taskables/url.rb +0 -3
- data/lib/tasks/concerns/models/taskables.rb +0 -7
- data/lib/tasks/concerns/models.rb +0 -4
- data/spec/dummy/public/uploads/tasks/taskables/url/request/image/1/doge.jpg +0 -0
- data/spec/dummy/public/uploads/tmp/1402401935-55786-0961/doge.jpg +0 -0
- data/spec/dummy/public/uploads/tmp/1402401935-55786-2854/doge.jpg +0 -0
- data/spec/dummy/public/uploads/tmp/1402402180-56033-5455/doge.jpg +0 -0
- data/spec/dummy/public/uploads/tmp/1402402180-56033-5512/doge.jpg +0 -0
- data/spec/factories/tasks_taskables_taskable_responses.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 955c630f90b4fe503c917430c9777d8c4c69e72f
|
4
|
+
data.tar.gz: f691fec1f524ca56689cdc798feef63fdbb739c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f135ddf10bc15fd9f0f49c79e6e25ea1d1b6a55557916316e1d4862fec3d26e1298ca9a9348b7eb633cd5377060294e525eee0c83648ff21b949e3311b737cb1
|
7
|
+
data.tar.gz: 8b2c7b060126bb237659450230d91ff913da051098f9ec7c713065a78d660c264b9b4667a4c699e17cbd150a9301b259c2da33b287535262b5eac96752edb511
|
data/README.md
CHANGED
@@ -6,6 +6,10 @@
|
|
6
6
|
[![Code Climate](https://img.shields.io/codeclimate/github/hyperoslo/tasuku.svg)](https://codeclimate.com/github/hyperoslo/tasuku)
|
7
7
|
[![Coverage Status](https://img.shields.io/coveralls/hyperoslo/tasuku.svg)](https://coveralls.io/r/hyperoslo/tasuku)
|
8
8
|
|
9
|
+
Tasuku is a framework for building tasks in Ruby on Rails. It ships with an array of tasks
|
10
|
+
ranging from reading articles to sharing photos. You can make your own tasks, too,
|
11
|
+
and we'd love for you to contribute if you do.
|
12
|
+
|
9
13
|
## Installation
|
10
14
|
|
11
15
|
Add this line to your application's Gemfile:
|
@@ -16,10 +20,6 @@ And then execute:
|
|
16
20
|
|
17
21
|
$ bundle
|
18
22
|
|
19
|
-
Or install it yourself as:
|
20
|
-
|
21
|
-
$ gem install tasuku
|
22
|
-
|
23
23
|
Install the gem:
|
24
24
|
|
25
25
|
$ rails generate tasuku:install
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require_dependency 'tasuku/application_controller'
|
2
|
+
|
3
|
+
module Tasuku
|
4
|
+
class Taskables::Code::ResponsesController < ApplicationController
|
5
|
+
include Concerns::Redirectable
|
6
|
+
|
7
|
+
before_action :set_request
|
8
|
+
|
9
|
+
def create
|
10
|
+
response = @request.responses.new response_params
|
11
|
+
response.author = send Tasks.config.author
|
12
|
+
|
13
|
+
respond_to do |format|
|
14
|
+
if response.save
|
15
|
+
format.html { redirect_to redirect_path_for(response) }
|
16
|
+
else
|
17
|
+
format.html { redirect_to :back, alert: response.errors.full_messages.to_sentence }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def response_params
|
25
|
+
params.require(:taskables_code_response).permit(:code)
|
26
|
+
end
|
27
|
+
|
28
|
+
def set_request
|
29
|
+
@request = Taskables::Code::Request.find params[:request_id]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -7,6 +7,7 @@ module Tasuku
|
|
7
7
|
before_action :set_question
|
8
8
|
|
9
9
|
def create
|
10
|
+
return redirect_to :back, alert: I18n.t('tasuku.taskables.questions.answers.no_answers') unless params[:taskables_question_answer]
|
10
11
|
answer = Taskables::Question::Answer.new
|
11
12
|
|
12
13
|
answer_params[:option_ids].each do |num|
|
data/app/models/tasuku/task.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
module Tasuku
|
2
|
+
module Taskables
|
3
|
+
class Code::Response < ActiveRecord::Base
|
4
|
+
include Taskable::Submission
|
5
|
+
|
6
|
+
belongs_to :request
|
7
|
+
belongs_to :author, polymorphic: true
|
8
|
+
|
9
|
+
validates :author_id, :author_type, presence: true
|
10
|
+
validates :code, presence: true
|
11
|
+
validate :code_is_valid
|
12
|
+
|
13
|
+
request is: :request
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def code_is_valid
|
18
|
+
errors.add :code, I18n.t('tasuku.taskables.codes.responses.invalid') unless code == request.code
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<div class="text"><%= request.text %></div>
|
2
|
+
|
3
|
+
<% if request.completed_by? current_author %>
|
4
|
+
<%= t 'tasks.taskables.codes.responses.already_submitted' %>
|
5
|
+
<% else %>
|
6
|
+
<div class="form">
|
7
|
+
<%= render partial: 'tasuku/taskables/code/responses/form', locals: { request: request } %>
|
8
|
+
</div>
|
9
|
+
<% end %>
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
<div class="image"><%= image_tag question.image %></div>
|
3
|
-
<% end %>
|
1
|
+
<%= render 'tasuku/taskables/illustration', request: question %>
|
4
2
|
|
5
3
|
<div class="text"><%= question.text %></div>
|
6
4
|
<div class="description"><%= question.description %></div>
|
@@ -12,6 +10,7 @@
|
|
12
10
|
<ul>
|
13
11
|
<% answer.votes.each do |vote| %>
|
14
12
|
<%= vote.option.text %>
|
13
|
+
<span class="reply"><%= vote.option.reply %></span>
|
15
14
|
<% end %>
|
16
15
|
</ul>
|
17
16
|
<% end %>
|
data/config/locales/en.yml
CHANGED
@@ -1,24 +1,168 @@
|
|
1
1
|
en:
|
2
|
+
activerecord:
|
3
|
+
models:
|
4
|
+
tasuku/task:
|
5
|
+
one: Task
|
6
|
+
other: Tasks
|
7
|
+
|
8
|
+
tasuku/taskables/question:
|
9
|
+
one: Question
|
10
|
+
other: Questions
|
11
|
+
|
12
|
+
tasuku/taskables/question/option:
|
13
|
+
one: Option
|
14
|
+
other: Options
|
15
|
+
|
16
|
+
tasuku/taskables/question/vote:
|
17
|
+
one: Vote
|
18
|
+
other: Votes
|
19
|
+
|
20
|
+
tasuku/taskables/question/answer:
|
21
|
+
one: Answer
|
22
|
+
other: Answer
|
23
|
+
|
24
|
+
tasuku/taskables/verification:
|
25
|
+
one: Verification
|
26
|
+
other: Verifications
|
27
|
+
|
28
|
+
tasuku/taskables/verification/confirmation:
|
29
|
+
one: Verification confirmation
|
30
|
+
other: Verification confirmations
|
31
|
+
|
32
|
+
tasuku/taskables/image/request:
|
33
|
+
one: Image request
|
34
|
+
other: Image requests
|
35
|
+
|
36
|
+
tasuku/taskables/image/response:
|
37
|
+
one: Image response
|
38
|
+
other: Image responses
|
39
|
+
|
40
|
+
tasuku/taskables/text/request:
|
41
|
+
one: Text request
|
42
|
+
other: Text requests
|
43
|
+
|
44
|
+
tasuku/taskables/text/response:
|
45
|
+
one: Text response
|
46
|
+
other: Text responses
|
47
|
+
|
48
|
+
tasuku/taskables/url/request:
|
49
|
+
one: URL request
|
50
|
+
other: URL requests
|
51
|
+
|
52
|
+
tasuku/taskables/url/response:
|
53
|
+
one: URL response
|
54
|
+
other: URL responses
|
55
|
+
|
56
|
+
tasuku/taskables/code/request:
|
57
|
+
one: Code request
|
58
|
+
other: Code requests
|
59
|
+
|
60
|
+
tasuku/taskables/code/response:
|
61
|
+
one: Code response
|
62
|
+
other: Code responses
|
63
|
+
|
64
|
+
tasuku/task_requirement:
|
65
|
+
one: Task requirement
|
66
|
+
other: Task requirements
|
67
|
+
|
68
|
+
attributes:
|
69
|
+
defaults: &DEFAULT_ATTRS
|
70
|
+
created_at: Created at
|
71
|
+
updated_at: Updated at
|
72
|
+
text: Text
|
73
|
+
verification: Verification
|
74
|
+
task: Task
|
75
|
+
request: Request
|
76
|
+
responses: Response
|
77
|
+
votes: Votes
|
78
|
+
description: Description
|
79
|
+
|
80
|
+
tasuku/task:
|
81
|
+
<<: *DEFAULT_ATTRS
|
82
|
+
taskable_type: Taskable type
|
83
|
+
taskable: Taskable
|
84
|
+
|
85
|
+
tasuku/taskables/question:
|
86
|
+
<<: *DEFAULT_ATTRS
|
87
|
+
multiple: Multiple choice
|
88
|
+
show_statistics: Show statistics
|
89
|
+
options: Options
|
90
|
+
|
91
|
+
tasuku/taskables/question/option:
|
92
|
+
<<: *DEFAULT_ATTRS
|
93
|
+
question: Question
|
94
|
+
correct: Correct answer
|
95
|
+
answers: Answers
|
96
|
+
|
97
|
+
tasuku/taskables/question/vote:
|
98
|
+
<<: *DEFAULT_ATTRS
|
99
|
+
option: Option
|
100
|
+
answer: Answer
|
101
|
+
|
102
|
+
tasuku/taskables/question/answer:
|
103
|
+
<<: *DEFAULT_ATTRS
|
104
|
+
option: Option
|
105
|
+
author: Author
|
106
|
+
option_id: Option
|
107
|
+
|
108
|
+
tasuku/taskables/verification:
|
109
|
+
<<: *DEFAULT_ATTRS
|
110
|
+
verifiable: Verifiable
|
111
|
+
confirmations: Confirmations
|
112
|
+
|
113
|
+
tasuku/taskables/verification/confirmation:
|
114
|
+
<<: *DEFAULT_ATTRS
|
115
|
+
|
116
|
+
tasuku/taskables/image/request:
|
117
|
+
<<: *DEFAULT_ATTRS
|
118
|
+
|
119
|
+
tasuku/taskables/image/response:
|
120
|
+
<<: *DEFAULT_ATTRS
|
121
|
+
image: Image
|
122
|
+
|
123
|
+
tasuku/taskables/text/request:
|
124
|
+
<<: *DEFAULT_ATTRS
|
125
|
+
|
126
|
+
tasuku/taskables/text/response:
|
127
|
+
<<: *DEFAULT_ATTRS
|
128
|
+
text: Text
|
129
|
+
|
130
|
+
tasuku/taskables/url/request:
|
131
|
+
<<: *DEFAULT_ATTRS
|
132
|
+
|
133
|
+
tasuku/taskables/url/response:
|
134
|
+
<<: *DEFAULT_ATTRS
|
135
|
+
|
2
136
|
tasuku:
|
3
137
|
taskables:
|
4
138
|
verifications:
|
5
139
|
confirmations:
|
6
|
-
confirm:
|
140
|
+
confirm: Confirm
|
141
|
+
confirming: Confirming...
|
7
142
|
questions:
|
8
143
|
answers:
|
9
|
-
|
10
|
-
|
11
|
-
|
144
|
+
already_answered: You have already answered this question
|
145
|
+
can_only_vote_once: You may only select one alternative
|
146
|
+
submit: Submit
|
147
|
+
submitting: Submitting...
|
148
|
+
no_answers: No answer chosen
|
12
149
|
images:
|
13
150
|
responses:
|
14
|
-
already_uploaded:
|
15
|
-
upload:
|
16
|
-
uploading:
|
151
|
+
already_uploaded: You have already uploaded an image
|
152
|
+
upload: Upload
|
153
|
+
uploading: Uploading...
|
17
154
|
texts:
|
18
155
|
responses:
|
19
|
-
already_responded:
|
20
|
-
respond:
|
156
|
+
already_responded: You have already submitted a text
|
157
|
+
respond: Submit
|
158
|
+
responding: Responding...
|
21
159
|
urls:
|
22
160
|
responses:
|
23
|
-
already_answered:
|
24
|
-
answer:
|
161
|
+
already_answered: You have already answered
|
162
|
+
answer: Answer
|
163
|
+
answering: Answering...
|
164
|
+
codes:
|
165
|
+
responses:
|
166
|
+
invalid: Invalid code
|
167
|
+
already_submitted: You have already submitted a code
|
168
|
+
submit: Submit code
|
data/config/locales/nb.yml
CHANGED
@@ -31,13 +31,13 @@ nb:
|
|
31
31
|
tasuku/taskables/text/response:
|
32
32
|
one: Svar på tekstforespørsler
|
33
33
|
other: Svar på tekstforespørsler
|
34
|
-
|
34
|
+
tasuku/taskables/verification/confirmation:
|
35
35
|
one: Bekreftelse
|
36
36
|
other: Bekreftelser
|
37
|
-
|
37
|
+
tasuku/taskables/url/request:
|
38
38
|
one: URL-forespørsel
|
39
39
|
other: URL-forespørsler
|
40
|
-
|
40
|
+
tasuku/taskables/url/response:
|
41
41
|
one: Svar på URL-forespørsel
|
42
42
|
other: Svar på URL-forespørsler
|
43
43
|
attributes:
|
@@ -100,11 +100,14 @@ nb:
|
|
100
100
|
verifications:
|
101
101
|
confirmations:
|
102
102
|
confirm: 'Bekreft'
|
103
|
+
confirming: 'Bekrefter...'
|
103
104
|
questions:
|
104
105
|
answers:
|
105
|
-
submit: 'Svar'
|
106
106
|
already_answered: 'Du har allerede svart på spørsmålet'
|
107
107
|
can_only_vote_once: 'Du kan kun avgi ett svar'
|
108
|
+
submit: 'Svar'
|
109
|
+
submitting: 'Sender inn...'
|
110
|
+
no_answers: 'Du valgte ingen svar'
|
108
111
|
images:
|
109
112
|
responses:
|
110
113
|
already_uploaded: 'Du har allerede lastet opp et bilde'
|
@@ -115,7 +118,14 @@ nb:
|
|
115
118
|
already_responded: 'Du har allerede sendt inn svartekst'
|
116
119
|
response: 'Svar'
|
117
120
|
respond: 'Svar'
|
121
|
+
responding: 'Sender inn...'
|
118
122
|
urls:
|
119
123
|
responses:
|
120
124
|
already_answered: 'Du har allerede oppgitt en addresse'
|
121
125
|
answer: 'Svar'
|
126
|
+
answering: 'Sender inn...'
|
127
|
+
codes:
|
128
|
+
responses:
|
129
|
+
invalid: 'Ugyldig kode'
|
130
|
+
already_submitted: 'Du har allerede oppgitt koden'
|
131
|
+
submit: 'Oppgi kode'
|
data/config/routes.rb
CHANGED
@@ -0,0 +1,8 @@
|
|
1
|
+
class AddVideoUrls < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
add_column :tasuku_taskables_questions, :video_url, :string
|
4
|
+
add_column :tasuku_taskables_image_requests, :video_url, :string
|
5
|
+
add_column :tasuku_taskables_url_requests, :video_url, :string
|
6
|
+
add_column :tasuku_taskables_text_requests, :video_url, :string
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Tasuku
|
2
|
+
module Concerns::Models::Requirables::Requirable
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
has_many :task_requirements
|
7
|
+
has_many :requirements, through: :task_requirements
|
8
|
+
has_many :inverse_tasks, class_name: "TaskRequirement", foreign_key: :requirement_id
|
9
|
+
has_many :required_for, through: :inverse_tasks, source: :task
|
10
|
+
|
11
|
+
accepts_nested_attributes_for :requirements, allow_destroy: true
|
12
|
+
|
13
|
+
def locked? author
|
14
|
+
required_task_ids = self.task_requirements.pluck :requirement_id
|
15
|
+
return false if required_task_ids.empty?
|
16
|
+
|
17
|
+
completed_task_ids = Tasuku::Task.completed_by(author).
|
18
|
+
where('tasuku_taskables_taskable_responses.task_id IN (?)', required_task_ids)
|
19
|
+
|
20
|
+
completed_task_ids.length.eql?(required_task_ids.length) ? false : true
|
21
|
+
end
|
22
|
+
|
23
|
+
def locked_by_tasks author
|
24
|
+
completed_task_ids = Tasuku::Task.completed_by(author).pluck(:id) || []
|
25
|
+
|
26
|
+
scope = self.requirements
|
27
|
+
scope = scope.where(
|
28
|
+
'tasuku_task_requirements.requirement_id NOT IN (?)', completed_task_ids
|
29
|
+
) unless completed_task_ids.empty?
|
30
|
+
|
31
|
+
scope
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Tasuku
|
2
|
+
module Concerns::Models::Taskables::Code::Request
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
include ::Tasks::Taskables::Taskable
|
7
|
+
|
8
|
+
has_many :responses
|
9
|
+
|
10
|
+
validates :text, :code, presence: true
|
11
|
+
|
12
|
+
responses are: :responses
|
13
|
+
|
14
|
+
def to_s
|
15
|
+
text
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/tasuku/seeds.rb
CHANGED
@@ -7,6 +7,9 @@ task = Tasks::Task.create! taskable: url_request
|
|
7
7
|
text_request = Tasks::Taskables::Text::Request.create! text: 'Write something'
|
8
8
|
task = Tasks::Task.create! taskable: text_request
|
9
9
|
|
10
|
+
code_request = Tasks::Taskables::Code::Request.create! text: 'Enter the code', code: '1337'
|
11
|
+
task = Tasks::Task.create! taskable: code_request
|
12
|
+
|
10
13
|
question = Tasks::Taskables::Question.create! text: 'Choose something'
|
11
14
|
option = Tasks::Taskables::Question::Option.create! question: question, text: 'One option'
|
12
15
|
option = Tasks::Taskables::Question::Option.create! question: question, text: 'Another option'
|
data/lib/tasuku/version.rb
CHANGED