无法访问相关表

duv*_*nia 0 orm ruby-on-rails

我真的处于压力之下并对Rails全新.项目在两天内到期.

我已经在Rails控制台上搜索了在我的数据库中输入的用户user = user.find(1)并返回.

用户has_many食谱食谱属于用户....分别在用户和食谱模型中定义.

我收到了错误.

用户的未定义方法"食谱"?

这就是我创建用户的方式

class CreateUsers < ActiveRecord::Migration
  def self.up
     create_table :users do |t|
     t.integer "position"
     t.boolean "visible", :default => false
     t.string "restaurant_name", :limit => 25
     t.string "username", :limit => 25
     t.string "password", :limit => 50
     t.string "hashed_email", :default => "", :null => false
     t.string "address1", :limit => 80
     t.string "address2", :limit => 80
     t.string "address3", :limit => 80
     t.string "county", :limit => 40
     t.string "telephone", :limit => 40
     t.text "web address", :limit => 60
     t.string "photo_path", :limit => 100
     t.text "description", :limit => 2000
     t.text "salt", :string, :limit => 50
      t.timestamps
   end
  end

  def self.down
    drop_table :users
  end
end
Run Code Online (Sandbox Code Playgroud)

食谱

    class CreateRecipes < ActiveRecord::Migration
      def self.up
        create_table :recipes do |t|
      t.integer "user_id"
      t.string "recipe_name", :limit => 100
      t.integer "greedy_type", :default => 0
      t.string "photo_path", :limit => 40
      t.text "description", :limit => 400
      t.text "recipe", :limit => 4000
      t.integer "ingredient1", :limit => 40
      t.integer "ingredient2", :limit => 40
      t.integer "ingredient3", :limit => 40
      t.integer "ingredient4", :limit => 40
      t.string "permalink"
      t.integer "position"
      t.boolean "visible", :default => false
      t.timestamps
    end
    add_index("recipes", "user_id")
    add_index("recipes", "permalink")
   end

  def self.down
    drop_table :recipes
  end
 end
Run Code Online (Sandbox Code Playgroud)

users.rb的

    class Users < ActiveRecord::Base
        has_many :recipes
    end
Run Code Online (Sandbox Code Playgroud)

recipe.rb

   class Recipes < ActiveRecord::Base
        belongs_to :users
        has_many :restaurants
    end
Run Code Online (Sandbox Code Playgroud)

错误

irb(main):005:0> users.recipe
NoMethodError: undefined method `recipe' for #<Users:0x599ebc0>
        from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activemodel-3.0.9/lib/active_model/attribute_methods.rb:
392:in `method_missing'
       from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record/attribute_methods.r
b:46:in `method_missing'
Run Code Online (Sandbox Code Playgroud)

Mik*_*kin 7

如果User的has_many recipes,为什么你加场recipe_iduser?您应该user_idRecipe类表中添加字段.创建recipe刚存储后user_id,这就是您所需要的一切.干杯!