PagesController中几乎相同的方法在Rails 4中产生未定义的方法错误

dar*_*ger 0 ruby-on-rails

我的Rails 4应用程序中有三个表 - 一个用于游戏,类别主题.这两个类别主题有一列:name,而游戏包括像信息starts_at游戏开始时.

在我的PagesController中,我可以使用params值显示来自GameTopic的数据find_by:

 topic = Topic.find_by_name(params[:topic])
 @games = Game.for_topic(topic).upcoming.order(:starts_at)
Run Code Online (Sandbox Code Playgroud)

这很好用.

奇怪的是,当我使用相同的推理但使用Category而不是Topic时,就像这样:

 category = Category.find_by_name(params[:category])
 @games = Game.for_category(category).upcoming.order(:starts_at)
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

undefined method `for_category'
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑,因为我肯定是在我的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
Run Code Online (Sandbox Code Playgroud)

CreateTopics Migration

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

       t.timestamps
      end
     end
   end
Run Code Online (Sandbox Code Playgroud)

Dha*_*udi 5

我想你for_topicGame模型中设置了命名范围.但是错过了for_category,这就是它失败的原因.

尝试for_categoryGame模型中设置命名范围.