2011-10-18 3 views
1

안녕 얘들 아 나는 Mongoid에 관계가있어이 관계에 current_user를 추가하여 거래를 생성하는 사용자를 얻을 수 없습니다. 3 모델과의 관계.current_user를 추가하십시오 Mongoid 관계를 찾으십시오

나는

user.rb 관계 (고안 모델)

# Relationships 
has_many :houses, dependent: :destroy 
has_many :deals, dependent: :destroy 
key :title 

house.rb을 세 가지 모델의 user.rb, house.rb을 가지고 deal.rb

# Relationships 
belongs_to :user 
embeds_many :deals 

deal.rb

내 생성 방법에 내 houses_controller.rb에서 내 routes.rb

resources :houses do 
    resources :deals 
end 

에서

# Relationships 
embedded_in :house, :inverse_of => :deals 
belongs_to :user 

나는이 쪽의 각 집을 CURRENT_USER를 얻을 : 내 deals_controller에서

def create 
    #@house = House.new(params[:house]) 
    @house = current_user.houses.new(params[:house]) 
    respond_to do |format| 
     if @house.save 
     format.html { redirect_to @house, notice: 'House was successfully created.' } 
     format.json { render json: @house, status: :created, location: @house } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @house.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

.rb 작성한 메소드는 다음과 같습니다.

def create 
     @house = House.find_by_slug(params[:house_id]) 
     @user = User.find(:user_id) 
     @deal = @house.deals.create!(params[:deal]) 
     redirect_to @house, :notice => "Comment created!" 
    end 

거래를 생성 한 current_user를이 마지막 메소드 create에 어떻게 추가 할 수 있습니까?

@deal.user=current_user 
@deal.save 

을 그리고 또한 사용자가 만든 사용하지 않는 제안 :

답변

0

당신은 단순히 만드는 행동이 두 줄을 추가 할 수 있습니다! 대신 scaffolded create 액션에서 .new와 .save를 사용해야합니다! ;)

+0

고마워요! 나는 새것을 위해 창조하고 변화를 저장한다 : D. 그러나 deal.rb에서 house.rb 및 "embedded_in : house : inverse_of => :"의 "embeds_many : deals"에 대해서는 "관계형을 통해 사용자 문서에서 거래 문서를 참조하는 것이 아닙니다. 딜이 내장 된 이후 허용되었습니다. " 하지만 has_many와 belongs_to가 잘 작동합니다. embeds_many 또는 has_many 및 references를 사용하는 것이 가장 좋습니다. 고맙습니다. – hyperrjas

+0

누군가가이 문서를 읽는다면 @hyperrjas가 보는 오류를 피할 수 있습니다. 예를 들어 "거래가 포함되어 있으므로 관계 문서를 통해 사용자 문서에서 (n) 거래 문서를 참조 할 수 없습니다." 그의 첫 번째 질문에서 정의한 user.rb에서이 줄을 지우십시오. #has_many : depends, depends : : destroy – brg