2016-03-16 24 views
0

我在我的Rails三個表4的應用程序 - 一個用於遊戲類別主題。無論類別主題有一個列:name,而遊戲包括像starts_at一個遊戲開始時的信息。在PagesController幾乎相同的方法產生一個未定義的方法錯誤軌道4,5

在我PagesController,我可以用find_by與PARAMS值顯示來自遊戲主題數據:

topic = Topic.find_by_name(params[:topic]) 
@games = Game.for_topic(topic).upcoming.order(:starts_at) 

這工作得很好。

有什麼奇怪的是,當我使用同樣的道理,但與類別而不是主題,就像這樣:

category = Category.find_by_name(params[:category]) 
@games = Game.for_category(category).upcoming.order(:starts_at) 

我收到一條錯誤消息:

undefined method `for_category' 

這是讓我感到困惑,因爲我絕對定義了類別,並在我的for_表達式中使用它。我在想我的錯誤嗎?

附加

CreateCategories遷移

class CreateCategories < ActiveRecord::Migration 
    def change 
    create_table :categories do |t| 
    t.belongs_to :topic, index: true 
    t.string :name, :null => false 

    t.timestamps 
    end 
    end 
    end 

CreateTopics遷移

class CreateTopics < ActiveRecord::Migration 
    def change 
    create_table :topics do |t| 
     t.string :name, :null => false 

     t.timestamps 
     end 
    end 
    end 
+3

你在說什麼「'for_'表達式」?是否有一種針對作用域的'method_missing'定義的方法?你可以發佈它的定義嗎? – BoraMa

+0

你的'遊戲'模型源代碼是怎麼樣的? –

回答

5

我想你設置的命名範圍for_topicGame模型。但是缺少for_category,這就是它失敗的原因。

嘗試在Game模型中設置命名範圍for_category

相關問題