2016-08-03 130 views
1

我需要添加到我的用戶新obob一些新的屬性,我將定義何時通過從我的數據庫檢索他們submited,但是當我submited新屬性是n,我不知道爲什麼Ruby on rails新對象屬性

def create 
    plan  = params[:user][:plan] 
    @plan_vars = Plan.find(plan) 

    @user  = User.new(user_params, :plan_id => @plan_vars.id, :lessons => @plan_vars.lessons) 
    if @user.save 
     flash[:success] = "Usuario creado exitosamente" 
     redirect_to users_path 
    else 
     flash[:warning] = "Ooops... algo ha fallado :O #{@user.errors}" 
     redirect_to new_user_path 
    end 
    end 

這裏是用戶PARAMS

def user_params 
     params.require(:user).permit(:name, :email, :phone, :document, :password, 
            :password_confirmation) 
    end 

回答

1

這裏是做什麼的?

這樣做:

@user = User.new(user_params) 
@user.plan_id = @plan_vars.id 
@user.lessons = @plan_vars.lessons 
@user.save 

如果使用或@plan_vars返回數組有結果的另一個錯誤類型的嵌套形式

+0

奏效完美!非常感謝! – mdiaz00147

+0

好的,然後接受答案。鼓勵讓我在未來幫助。 –

0

您可以合併計劃PARAMS到user_params哈希

def user_params 
    params.require(:user).permit(:name, :email, :phone, :document, :password, 
           :password_confirmation) 
         .merge(plan_id: @plan_vars.id, lessons: @plan_vars.lessons) 
end 


def create 
    plan = params[:user][:plan] 
    @plan_vars = Plan.find(plan) 
    @user = User.new(user_params) 
end 

希望,這有助於!

0

我更喜歡類似於@ Lavika的答案的東西,但合併上創建行動

def create 
    plan = params[:user][:plan] 
    @plan_vars = Plan.find(plan) 
    @user = User.new(user_params.merge(plan_id: @plan_vars.id, lessons: @plan_vars.lessons)) 
    # ... 
end 

@pradeep sapkota的回答也是一個不錯的選擇