Я работаю в этом случае. Клиент может иметь N
количество тарифов, мне нужно сохранить все.Как манипулировать массивом внутри в activerecord в рельсах?
В моих ClientController
он работает так:
def new
@Client = Client.new()
4.times do
tariffs = @Client.tariffs.build
end
end
Теперь с точки зрения «зарегистрировать клиентов» Я получил params
так:
"client"=>{"name"=>"",
"gender"=>[""],
"hair_color_id"=>"",
"age"=>"",
"height"=>"",
"Weight"=>"",
"orientation"=>"",
"country_id"=>"",
"Language"=>[""],
"service"=>[""],
"category_id"=>"",
"description"=>"",
"tariffs_attributes"=>{"0"=>{"quantity"=>"",
"duration"=>"Hours",
"price"=>"",
"currency_id"=>"1"},
"1"=>{"quantity"=>"",
"duration"=>"Hours",
"price"=>"",
"currency_id"=>"1"},
"2"=>{"quantity"=>"",
"duration"=>"Hours",
"price"=>"",
"currency_id"=>"1"},
"3"=>{"quantity"=>"",
"duration"=>"Hours",
"price"=>"",
"currency_id"=>"1"},
"4"=>{"quantity"=>"",
"duration"=>"Hours",
"price"=>"",
"currency_id"=>"1"},
"5"=>{"quantity"=>"",
"duration"=>"Hours",
"price"=>"",
"currency_id"=>"1"},
"6"=>{"quantity"=>"",
"duration"=>"Hours",
"price"=>"",
"currency_id"=>"1"},
"7"=>{"quantity"=>"",
"duration"=>"Hours",
"price"=>"",
"currency_id"=>"1"}},
"homeshow"=>"0",
"planetariff"=>"0",
"profileclient"=>"0",
"city_id"=>"",
"phonenumber"=>"",
"fullname"=>"",
"user"=>{"email"=>"[email protected]",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]"}},
"commit"=>"Register",
"locale"=>"en"}
Я хочу, чтобы получить доступ к массиву «tariffs_attributes »и сохраните содержимое там.
Я попытался с этой линией внутри def create
@tariffs = Tariff.create(params[:tariffs_attributes])
, но мне нужно обновить/добавить идентификатор клиента в каждом регистре, например:
Я попытался с:
params[:client][tariffs_attributes].each do |l|
@tariff = Tariff.new(l)
@tariff.update_attribute(:client_id, @client_id)
@tariff.save
end
Любые идеи или предложения? Спасибо заранее
Итак, вы хотите создать тарифы, когда инициализируется регистрация клиента, а не когда клиент зарегистрирован? Я не могу понять, чего вы пытаетесь достичь. –