Ruby on rails 与activerecord rails的关系问题

Ruby on rails 与activerecord rails的关系问题,ruby-on-rails,activerecord,devise,Ruby On Rails,Activerecord,Devise,我还在学习Rails,我读了一些书,在codeschool.com上做了一些实践,现在我正试图从头开始编写我的第一个简单应用程序 我正在使用Desive进行身份验证,但由于我对rails还是有点差劲,所以目前我还没有收到电子邮件确认,出于测试目的,只有管理员用户可以采取行动 以下是我的模型: [loluser@fedora models]$ ls admin.rb pet.rb user.rb [loluser@fedora models]$ cat admin.rb class Admi

我还在学习Rails,我读了一些书,在codeschool.com上做了一些实践,现在我正试图从头开始编写我的第一个简单应用程序

我正在使用Desive进行身份验证,但由于我对rails还是有点差劲,所以目前我还没有收到电子邮件确认,出于测试目的,只有管理员用户可以采取行动

以下是我的模型:

[loluser@fedora models]$ ls
admin.rb  pet.rb  user.rb
[loluser@fedora models]$ cat admin.rb 
class Admin < ActiveRecord::Base
    has_many    :pets 
    devise :database_authenticatable, :registerable, :timeoutable, :validatable,
         :timeout_in => 20.minutes
end
[loluser@fedora models]$ cat pet.rb 
class pet < ActiveRecord::Base
    belongs_to :admin
end
[loluser@fedora型号]$

在我的控制器中,我想在索引中显示管理员[1]的宠物,因此我有以下代码:

  class petsController < ApplicationController
  before_filter :authenticate_admin!
  # GET /pets
  # GET /pets.xml
  def index
    admin=Admin.find(1)
    @pets = pet.admin.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @pets }
    end
  end
但是,我遇到了以下错误:

NoMethodError in petsController#index

undefined method `admin' for #<Class:0x7f2daa7b0258>

Rails.root: /home/loluser/dev/app2/devise_example
Application Trace | Framework Trace | Full Trace

app/controllers/pets_controller.rb:7:in `index'
如果我需要澄清一些事情,请告诉我

提前感谢。

应该是:

@pets = admin.pets

您应该看看ActiveRecord关联指南,它非常好:

您不需要.all。你有admin实例,admin有很多宠物,对吗? 那就这么做吧

@pets=admin.pets

您只需执行@pets=admin.pets即可 对于您的错误,即pets表中没有admin_id字段
回想起如果你想从管理员那里获得与宠物的许多关联,那么你需要在宠物表中设置管理员id

谢谢你将我指向@pets=admin.pets.all,但现在我得到了错误ActiveRecord::StatementInvalid in PetsControllerindex SQLite3::SQLException:没有这样的列:pets.admin\u id:SELECT pets.*from pets WHERE pets.admin\u id=1Rails.root:/home/heptagone/dev/app2/devise|example Application Trace | Framework Trace | Full Trace app/controllers/pets|controller.rb:7:在'index'中,我已经完成了命令bundle exec rake:db migrate,所以我想管理员id已经是pets的一部分,因为你可以在我的原始帖子中看到我的模型