2017-05-18 2 views
0

을 만들에서 작동하지 않습니다레일 왜 모델 새로운()., 모델 1 비계 만드는 행동에서 행동

def create 
    @auclub = Auclub.new(auclub_params) 
    user = User.find(current_user.id) 
    respond_to do |format| 
    if @auclub.save && user.update(auclub_id: @auclub.id) 
     format.html { redirect_to @auclub, notice: 'Auclub was successfully created.' } 
     format.json { render :show, status: :created, location: @auclub } 
    else 
     //some codes 
    end 
    end 
end 

을 저장하고 그리고 난

이 코드가 작동하는 사용자와 클럽을 만들고 싶어하지만, 만약 내가 이런 식으로 사용한다면

user = User.find(current_user.id) 
user.new(auclub_id : @auclub.id) 
user.save 

그것은 작동하지 않습니다! update와 new.save 사이에 어떤 차이점이 있습니까?

답변

0

잘못된 방식으로 작업하고 있습니다.

user = User.find(current_user.id) 
user.auclub_id = @auclub.id 
user.save 

을 그리고 귀하의 경우 user 같은 액티브 인스턴스에 사용할 수 new 방법이 없다고 생각 :

모델과 다른 코드없이, 나는 이런 식으로 할 제안 할 수 있습니다.

new

같은 새로운 인스턴스를 생성하는 액티브 클래스에 사용됩니다

user = User.new 

을 그리고 save 방법을 사용하여 update 방법을 사용하여 수동으로 속성을 재 할당하고, 객체를 저장하는 사이에 많은 차이가 있다고 생각하지 않습니다 그러나 모델에 정의 된 성능, DRY 원칙 및 콜백을주의 깊게 관찰해야합니다.

2

시도 :

@auclub = Auclub.new(auclub_params) 
    @user = User.find(current_user.id) 
    @auclub.save 
    @user.auclub_id = @auclub.id 
    @user.save 

APi dock

을 알고