aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb
diff options
context:
space:
mode:
authoryuuji.yaginuma <yuuji.yaginuma@gmail.com>2019-05-04 09:14:10 +0900
committeryuuji.yaginuma <yuuji.yaginuma@gmail.com>2019-05-05 09:55:37 +0900
commit85a8bc644be69908f05740a5886ec19cd3679df5 (patch)
tree370f8c6a877d578c1d77fe45f25cb3d937a1f4d0 /railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb
parentac1ba44f8d46ebbbe6889629d263e5690631f6a1 (diff)
downloadrails-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.rb12
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