AaronLasseigne / active_interaction

:briefcase: Manage application specific business logic.
MIT License
2.06k stars 136 forks source link

Handling nested attributes (hash of hashes) #531

Open PedroHamzehT opened 2 years ago

PedroHamzehT commented 2 years ago

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.

AaronLasseigne commented 2 years ago

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

r4mbo7 commented 11 months ago

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
umamaheswari-raj commented 10 months ago

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!