active_interaction icon indicating copy to clipboard operation
active_interaction copied to clipboard

Handling nested attributes (hash of hashes)

Open PedroHamzehT opened this issue 2 years ago • 3 comments

Hello! I am wondering how I can set up my interaction to expect has_many nested attributes in the Rails form format.

I have two classes:

class User
  has_many :pets
end

class Pet
  belongs_to :user
end

And when a create a form for the User model and I want to already create their pets, I can just use the fields_for helper to send a pets_attributes hash with others hash (simulating an array).

Example: The submit will be sent in this format:

"user" => { "pets_attributes"=>{"0"=>{"name"=>"Faisca}, "1" => {"name" => "Cat"}}}

I would like to know how to expect the pets_attributes hash inside of my interaction, knowing that the pets_attributes can have n hashes because it is a has_many association.

PedroHamzehT avatar Jun 30 '22 01:06 PedroHamzehT

I'm considering solutions for this. See #535.

AaronLasseigne avatar Jul 14 '22 03:07 AaronLasseigne

A workaround until the gem support this, is to use the option strip: false to the hash (nested attributes wont be validated but it will works):

class CreateUser < ActiveInteraction::Base
  hash :pets_attributes, default: nil, strip: false

r4mbo7 avatar Jul 25 '23 06:07 r4mbo7

A workaround until the gem support this, is to use the option strip: false to the hash (nested attributes wont be validated but it will works):

class CreateUser < ActiveInteraction::Base
  hash :pets_attributes, default: nil, strip: false

It's works for me!

umamaheswari-raj avatar Aug 31 '23 07:08 umamaheswari-raj