Skip to content

Commit faa3fa2

Browse files
committed
Permit only public keywords in ApplicationForm
1 parent a0db1e7 commit faa3fa2

File tree

5 files changed

+13
-4
lines changed

5 files changed

+13
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## Unreleased
22

3+
* Permit only public keywords in `ApplicationForm.filter_params`
34
* Relax and tweak rubocop:
45
* Prefer fixed indentation for multi-line arguments
56
* Allow positional args on first line, keywords on next lines

example_app/app/forms/application_form.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,14 @@ def param_key = model_name.param_key
1717
def attribute_names = portrayal.keywords.without(:action, :method)
1818
def from_params(params, **kw) = new(**filter_params(params), **kw)
1919

20+
def public_attribute_names
21+
attribute_names.select { |n| public_method_defined?(n) }
22+
end
23+
2024
def filter_params(params)
2125
params
2226
.require(param_key)
23-
.permit(*attribute_names)
27+
.permit(*public_attribute_names)
2428
.to_hash
2529
.transform_keys(&:to_sym)
2630
end
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
+55HkgjqsvjKqp8JjM/VHQpoQ/WOKz+MDVqrACXWrET0CdS60orEFMONZO66zgkvXsSQO0xdhu4DmVy7LQdAAt7pZEc4n1al5SlIqwAnvOXgsJNf8JhmKt2CvQ79LV6l+eGEOzAxVtefbyTCqMCvJGnl6vPSja+vWyKoc4frNdRdS7XVX/yyGxaEDvHNZM/1daeFkTzncjvnpDEkNP2K6/Z+yVbvEDEQiEAHjJsf8d1l+UY6soJzUdn7qYMdYKRSPDjFU3aGQikHlLNkru5o1vF0FjHdMgdGGPmHcnrNegpPYzAlB+Etm0KNb+D7K5S0Xfuw9NtnpA5CJSlPkb8uOkdcVr/KiNh7KfKdMeWKjITYeLfs1zyRIdJdaK2cFwhSxnSgaV9bSeqxJ+UgAmtMMmXk9Mg+gwzLcQE8--Nr4y+IbQi44HKbIk--ptnOtZx6lc1mGysVAJbcLg==
1+
ycI84xoF4RPiCTWeEIH2z6LzXd50WPmCMe05HsXITgk+EiNuc/EbjNXK2+zwbs2z6lMf/3XSqJLpYB1Zj6BkduNm6QCuCnJXqgDcN6IiWb46iaZY5UkPi7SPLRELkzrMlY7NxWvb6fUmCUKZsKSEv8tyABvLehAvmjR71HJ0Gu70adrH7t1CwIur0qXSBnkEmh+Ph83x9gIYsiiHpy5qUUzaZHvUv1hA/ZvOGWGOykNcGv4s0n65zMU44J0IIhAzgabp41kh+iodwYYKr3c+t1RFemuo0Xibdx6g61581ZB7ix6gNn4rN26AZa7giu35SkbeXE4c0M5BZzLLfunbIOLJUIUu0oO05kUi5EqXrnRe0wSs565th4ybgo7BZxWbDyPN9jzfar4GZpJ9sPQ7nwHB7F7Nvwu2kJn5--OKiQHak+Hl5y+vkh--WA9Vm8aXtCpJrBC3WIB5fQ==

example_app/config/master.key

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ce40f0c5edc7a8ecb3927866240323d9
1+
72505aa321c9d2147743665efe130c05

narrative.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,10 +360,14 @@ def param_key = model_name.param_key
360360
def attribute_names = portrayal.keywords.without(:action, :method)
361361
def from_params(params, **kw) = new(**filter_params(params), **kw)
362362
363+
def public_attribute_names
364+
attribute_names.select { |n| public_method_defined?(n) }
365+
end
366+
363367
def filter_params(params)
364368
params
365369
.require(param_key)
366-
.permit(*attribute_names)
370+
.permit(*public_attribute_names)
367371
.to_hash
368372
.transform_keys(&:to_sym)
369373
end

0 commit comments

Comments
 (0)