0

在我的應用程序中,我想檢查是否存在與同一個藝術家和日期字段作爲審查模型的音樂會模型。如果不是那麼我想創建一個新的音樂會和審查,因爲音樂會has_many評論和評論belongs_to concert ...檢查模型的實例是否已經存在與某些參數

所以我寫了一個存在?在我的演唱會控制器功能:

def exists(@artist, @date)? 
    @concert_exists = @concerts.find_by_artist_and_date(artist: @artist, date: @date) 
    if @concert_exists.nil? 
     return false 
    else 
     return true 
    end 
    end 

,然後在我的檢討控制器我想爲它創建功能做到這一點:

def create 

    if Concert.exists(review_params[:artist], review_params[:date])? 
     #add review to this concert 
    else 
     @concert = Concert.create(:artist => "artist", :venue => "venue", :date => "2014-2-2") 
     @review = @concert.reviews.create(review_params) 
     @concert.artist = @review.artist 
     @concert.venue = @review.venue 
     @concert.date = @review.date 
     @concert.save 
    end 
end 

我不斷收到寫着

錯誤

「syntax error,unexpected keyword_else」

是我的實現不正確,是否有更簡單的方法來做我正在嘗試的?

回答

1

的Rails已經有一個會替你find_or_create_by,這樣你就不需要重新發明輪子

@concert = Concert.find_or_create_by(artist: @artist, venue: "venue", date: @date) 
@concert.reviews.create(review_params) 
+0

因此,如何檢查新演唱會是否爲是否創建? – parameter

+0

@ user2739431 rails文件說:'find_or_create_by'方法檢查是否存在具有屬性的記錄。如果沒有,則創建被調用,您不妨閱讀文檔以更好地理解它的功能,還可以在傳遞給方法 – bjhaid

+0

的散列中包含'venue:「場所」'' ,但我需要知道它是否被創建,然後我可以添加一個已存在的評論 – parameter

0

我想你想寫:

def exists?(@artist, @date) 

和:

if Concert.exists?(review_params[:artist], review_params[:date]) 

變化問號的位置。

+0

你說得對,幫助的方法,但現在我得到「錯誤的參數個數( 2 for 0..1)「 if Concert.exists?(review_params [:artist],review_params [:date]) – parameter

相關問題