2014-01-10 50 views
0

我試圖在保存一個模型(停止)的同時保存到兩個關聯表(遊覽/停止,停止/場地)。旅遊has_many站點和站點屬於兩個關聯表..但因爲我在停止控制器,我似乎只能通過@ tour.stops.create保存,所以我手動做了一個創建..這是一種在rails中保存關聯的正確方法嗎?

這是我的從站控制器代碼

class StopsController < ApplicationController 

    def create 
    tour_id = params[:stop][:tour_id] 
    #check to make sure venue matches before saving 
    venue_name = params[:stop][:venue_name] 
    venue_id = Venue.find_by(name: venue_name).id 



    @tour = Tour.find(tour_id) 

    @stop = @tour.stops.create(strong_params) 

    #this seems like it might be ghetto 

    Stopsvenuesmembership.create!(venue_id: venue_id, stop_id: @stop.id) 

回答

0

我相信這樣做的傳統方式是

@stop = @tour.stops.create(params) 

@venue = Venue.find_by_name(venue_name) # or however you want to find it 
@venue.stops << @stop 
+0

當我加入這個我得到「未定義的方法'停止7:Fixnum對象」 – user3155441

+0

@ user3155441這奇怪 - 我無法想象'.find_by_name'永遠會返回一個數字。是否有可能將'@ venue'設置爲一個id號碼而不是一個對象? – MrTheWalrus

相關問題