2012-05-24 2 views
1

내 구성 양식을 저장하기 전에 필드를 수정 : 별도의 등록 컨트롤러를 사용레일 및 고안은 : DB

을 확장 뷰를 고안

고안

을 (보기/궁리/등록에서 파일을 이동 보기/등록)

양식을 제출 한 후에 채워야하는 새 등록 양식에 숨겨진 필드가 있지만 값이 데이터베이스에 저장되지 않습니다. 여기

내가 가진 무엇 : routes.rb에서

:

보기/regiistrations/새, 나는 숨겨진 필드로 정의 COMPANY_ID 한 모델에서

/user.rb에서

devise_for :users, :controllers => { :registrations => 'registrations' }, :path => '', :path_names => { :sign_in => "login", :sign_up => "request_invite" } 

나는 가지고있다 :

attr_accessible: company_id 

registrations_controller.rb에서 나는 가지고있다 :

class RegistrationsController < Devise::RegistrationsController 
    ........ 
def create 
    @user = User.new(params[:user]) 
    company_id = params[:user][:company] + "_" + params[:user][:ssid] 
    params[:user][:company_id] = company_id.downcase 

    respond_to do |format| 
    if @user.save 
     flash[:notice] = "New user added" 
     format.html { redirect_to root_url } 
     format.json { render json: @user, status: :created, location: @user } 
    else 
     format.html { render action: "new" } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
    end 
    end 
end 
..... 

양식의 내용은 DB에 저장되지만 company_id에는 저장되지 않습니다. company_id가 실제로 만들어지고 있는지 확인하고 실제로 사용자 매개 변수의 일부로 전달됩니다. DB에 저장이 company_id를 계산하기 전에 어딘가에서 발생 했습니까? 비슷한 주제에 대해 StackOverflow Q/A를 많이 보았지만 아무 것도 노력하지 않거나 적합하지 않았습니다. 초보자는 여기있을 것입니다. 그래서 사람들이 정기적으로하는 일이라고 상상해 봅니다.

UPDATE :

class RegistrationsController < Devise::RegistrationsController 
........ 
    def create 
    @user = User.new(params[:user]) 
    company_id = params[:user][:company] + "_" + params[:user][:ssid] 
    @user.company_id = company_id.downcase 

    respond_to do |format| 
     if @user.save 
     flash[:notice] = "New user added" 
     format.html { redirect_to root_url } 
     format.json { render json: @user, status: :created, location: @user } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
    end 
    end 
    ..... 

답변

0

변경이 라인 : 여기에 params[:user][:company_id] = company_id.downcase

: @user.company_id = company_id.downcase

에서, Q/A가 완료 확인 다음은 올바른 코드 이전 해시 값을 사용하여 이미 객체를 만들었으므로 params를 변경하면 아무런 효과가 없습니다.

+0

물론 가능합니다. 그것은 효과가 있었다. 감사 – EastsideDeveloper