0
레일즈 4 앱에는 has_one 연관이있는 두 개의 모델이 있습니다.레일 4 개의 네스트 된 속성에 has_one 연관 롤백이 있습니다
class User < ActiveRecord::Base
has_one :member
accepts_nested_attributes_for :member
end
class Member < ActiveRecord::Base
belongs_to :user
end
회원과 함께 회원을 만들려고합니다. 이것은 내 컨트롤러입니다.
class UsersController < ApplicationController
def new
@user = User.new
@user.build_member
end
def create
@user = User.new member_params
if @user.save
redirect_to users_path
else
render action: :new
end
end
private
def member_params
params[:user].permit(:id, :name, :email, :password, :city, member_attributes: [ :position, :avatar, :avatar_cache, :user_id ])
end
end
이것은 양식입니다. 나는 SimpleForm을 사용한다.
= simple_form_for @user do |f|
= f.input :name
= f.input :email
= f.input :city
= f.input :password
= f.simple_fields_for :member, @user.member do |us|
= us.input :position
= us.input :avatar
= f.button :submit
내 코드는 어떤 부분이 잘못 되었습니까? 레일에서
Parameters: {"utf8"=>"✓", "authenticity_token"=>"eqxcHlLrnKB9atm3YGG6WyMT429qqRr5zpB/LM4IMAI=", "user"=>{"name"=>"Павел", "email"=>"[email protected]", "city"=>"Ульяновск", "password"=>"[FILTERED]", "member_attributes"=>{"position"=>"123", "avatar_cache"=>""}}, "commit"=>"Создать User"}
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 (0.3ms)
BEGIN
User Exists (0.5ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1 (0.3ms)
ROLLBACK
레일 3 내 프로젝트에서 작업이 코드,하지만이없는 strong_parameters 3.
고유 한 것으로 설정된 이메일에 다른 사용자가 이미 있다는 것을 발견했기 때문에 롤백중인 것으로 보입니다. 이것이 문제가 아닌 경우 금지 된 매개 변수를 말하는 서버 로그에 오류가 있습니까? – irruputuncu
@irruputuncu 예! 네가 옳아! 나는 'validates : user_id, presence : true' 멤버 모델에 을 가지고 있습니다. 이 줄을 제거한 후에 작동합니다! 감사합니다. –
기쁜 당신의 문제를 이미 해결할 수있었습니다! 나는 방금 답변을 게시 했으므로이 스레드는 해결 된 것으로 표시 할 수 있습니다. – irruputuncu