diff options
author | yuuji.yaginuma <yuuji.yaginuma@gmail.com> | 2019-05-04 09:14:10 +0900 |
---|---|---|
committer | yuuji.yaginuma <yuuji.yaginuma@gmail.com> | 2019-05-05 09:55:37 +0900 |
commit | 85a8bc644be69908f05740a5886ec19cd3679df5 (patch) | |
tree | 370f8c6a877d578c1d77fe45f25cb3d937a1f4d0 /railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb | |
parent | ac1ba44f8d46ebbbe6889629d263e5690631f6a1 (diff) | |
download | rails-85a8bc644be69908f05740a5886ec19cd3679df5.tar.gz rails-85a8bc644be69908f05740a5886ec19cd3679df5.tar.bz2 rails-85a8bc644be69908f05740a5886ec19cd3679df5.zip |
Make generated test work even when using virtual attributes
The virtual attributes(`attachment` and `rich_text`) can't set value
with `fill_in`. So avoid using it. Once #35885 is merged, will be
modified to use it.
Also, add checking attachment attached or not for avoiding
`DelegationError` when attachment didn't attach.
Diffstat (limited to 'railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb')
-rw-r--r-- | railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb b/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb index 8b46eb88ae..e1ca54ec91 100644 --- a/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +++ b/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb @@ -36,9 +36,15 @@ module Rails private def permitted_params - params = attributes_names.map { |name| ":#{name}" }.join(", ") - params += attributes.select(&:attachments?).map { |a| ", #{a.name}: []" }.join - params + attachments, others = attributes_names.partition { |name| attachments?(name) } + params = others.map { |name| ":#{name}" } + params += attachments.map { |name| "#{name}: []" } + params.join(", ") + end + + def attachments?(name) + attribute = attributes.find { |attr| attr.name == name } + attribute&.attachments? end end end |