2012-05-29 3 views
1

나는 레일스를 아직도 배우고 있으며 일부 책을 읽었으며 codeschool.com에서 손을 썼다. 이제 처음부터 간단한 응용 프로그램을 작성하려고한다.activerecord rails과의 관계 문제

인증을 위해 장치를 사용하고 있지만 여전히 레일에서 빠져 있기 때문에 테스트를 위해 관리 사용자 만 조치를 취할 수있는 전자 메일 확인을받지 못했습니다. 내 컨트롤러에서 $

, 나는 지수 [1] '의 애완 동물 그래서 나는이 코드를 가지고 관리자를 표시 할

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

[loluser @ 페도라 모델] : 여기

내 모델입니다 :

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' 
0 :

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 

는 그러나, 나는이 오류를 얻고있다

도움이 될 것입니다. 명확히 할 필요가 있으면 알려주세요.

미리 감사드립니다.

+0

감사를 ADMIN_ID 설정해야하지만 지금은 오류 액티브 :: StatementInvalid PetsController에서 # 지수 sqlite3를 :: SQLExceptio 받고 있어요 n : 해당 열 없음 pets.admin_id : SELECT "pets". * FROM "pets"WHERE ("pets".admin_id = 1) Rails.root :/home/heptagone/dev/app2/devise_example 응용 프로그램 추적 | 프레임 워크 추적 | 전체 추적 app/controllers/pets_controller.rb : 7 : 인덱스에 이미 "bundle exec rake : db migrate"명령을 수행 했으므로 admin_id가 이미 애완 동물의 일부가 될 수 있습니다. 내 원래 게시물에 내 모델을 참조하십시오 – pringles

답변

0

당신이 .ALL 필요하지 않습니다. 당신은 admin 인스턴스가 있고 admin에게는 많은 애완 동물이 있습니까? 그래서 그냥 당신은 간단하게 할 수있는

@pets = admin.pets

0


그리고 당신은 다음 관리자에서 애완 동물 has_many 연결을 원하는 경우에 당신이 ... 테이블 가 기억 애완 동물에 ADMIN_ID 필드를 해달라고 말한다 당신의 오류에 대한 @pets = admin.pets 당신은 @pets = admin.pets.all에 저를 가리키는 애완 동물 테이블에