It looks like `operation` may always be defined, so it might just be nicer to do:

```ruby
def join_relation(operation)
  source_relation.join(target_relation).instance_eval(&operation)
end
```