Sha256: b791cf63c73223a10b55d33c6c2d518d8a82c99957178535a01fc379486cfe75

Contents?: true

Size: 760 Bytes

Versions: 2

Compression:

Stored size: 760 Bytes

Contents

---
id: finalize
title: Finalization
sidebar_label: Finalize
---

To apply custom transformations to the cloned record, you can use the `finalize` declaration:

```ruby
class UserCloner < Clowne::Cloner
  finalize do |_source, record, _params|
    record.name = 'This is copy!'
  end

  trait :change_email do
    finalize do |_source, record, params|
      record.email = params[:email]
    end
  end
end

cloned = UserCloner.call(user).to_record
cloned.name
# => 'This is copy!'
cloned.email == 'clone@example.com'
# => false

cloned2 = UserCloner.call(user, traits: :change_email).to_record
cloned2.name
# => 'This is copy!'
cloned2.email
# => 'clone@example.com'
```

Finalization blocks are called at the end of the [cloning process](execution_order.md).

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
clowne-1.1.0 docs/finalize.md
clowne-1.0.0 docs/finalize.md