OFN it's hard enough. No need to abuse implicitness making things very
hard to follow.
I've spent around 20min trying to find out where this controller action
was implemented until I realized Rails renders the matching view if no
controller action is defined.
Making it git-greppable makes it a bit easier next time.
What used to be done as
```sql
SELECT "order_cycles".* FROM "order_cycles"
WHERE (order_cycles.orders_open_at <= '2019-07-29 17:45:20.137294'
AND order_cycles.orders_close_at >= '2019-07-29 17:45:20.137333')
SELECT DISTINCT "enterprises".* FROM "enterprises"
INNER JOIN "exchanges" ON "enterprises"."id" = "exchanges"."receiver_id"
WHERE "exchanges"."order_cycle_id" = 1
AND "exchanges"."incoming" = 'f'
(...)
SELECT DISTINCT "enterprises".* FROM "enterprises"
INNER JOIN "exchanges" ON "enterprises"."id" = "exchanges"."receiver_id"
WHERE "exchanges"."order_cycle_id" = 4
AND "exchanges"."incoming" = 'f'
```
it became
```sql
SELECT "order_cycles".* FROM "order_cycles"
WHERE (order_cycles.orders_open_at <= '2019-07-29 17:45:20.137294'
AND order_cycles.orders_close_at >= '2019-07-29 17:45:20.137333')
SELECT "exchanges".* FROM "exchanges"
WHERE "exchanges"."incoming" = 'f'
AND "exchanges"."order_cycle_id" IN (1, 2, 3, 4)
SELECT "enterprises".* FROM "enterprises"
WHERE "enterprises"."id" IN (3, 4, 5, 6)
```
I haven't got any perf numbers yet but each of the N+1 queries took as
long as the single `enterprises` query on my dev machine.
This should have a noticeable perf impact since the changed method
belongs to the `BaseController` seems to be executed in all HTML
requests as it gets called by
```ruby
before_filter :warn_invalid_order_cycles, if: :html_request?
```
Set master variant price in products controller
Code climate tidy up
Syntax improvement
Revert "Remove non-functional Price field from Edit Product screen"
This reverts commit 585072302c.
Syntax improvement
fixing revert
Revert "Remove non-functional Price field from Edit Product screen"
This reverts commit 585072302c.
fixing conflicts
Spree 2.0 keeps shipping fee adjustments open unless they are manually
closed. But open adjustments cannot be edited.
To preserve updates, like changing the amount of the shipping fee
we close the adjustment first.
Note that, as explained in
https://apidock.com/rails/v3.2.13/ActiveRecord/Relation/delete, `delete` does
not trigger callbacks and so it skips the products cache logic.
If we still want to avoid instantiating the AR object, we need to explicitly
call that logic for the cache to be up-to-date.