Cześć, sprawa jest następująca. Mam tabelę słownikową z grupami użytkowników. Potrzebuję użyć zagnieżdżonych atrybutów podczas tworzenia nowego usera, czyli mam selecta, wczytuję sobie dostępne grupy, wybieram i tworzy mi relację. No i tu się zaczynają schody, niby w paramsach dostaję nazwę z selecta, ale nie potrafi utworzyć relacji między użytkownikiem a grupą. Co robię źle? Czy powinienem w akcji create
podstawić coś takiego, jak: @user.user_group = the_chosen_group
?
Oto mój kod:
class User < ActiveRecord::Base
belongs_to :user_group
accepts_nested_attributes_for :user_group
end
class UserGroup < ActiveRecord::Base
has_many :users
end
UsersController < ApplicationControler
def new
@user = User.new
@user.build_user_group
end
def create
@user = User.new(user_params)
if @user.save
# akcja
else
# akcja
end
end
private
def user_params
params.require(:user).permit(:email, :username, user_group_attributes: [:name])
end
end
= simple_form_for @user do |f|
= f.input :username
= f.simple_fields_for :user_group do |builder|
= builder.input :name, collection: UserGroup.all.map(&:name), prompt: "Choose one"
= f.input :email
= f.button :submit, 'Create', class: 'btn btn-success'
BTW, czy uważacie, że UserGroup to dobra nazwa? Czy lepiej użyć samo Group lub też użyć klucza obcego by było @user.group
zamiast @user.user_group
?
Pozdrawiam.