2010-01-26 2 views
2

내가 다른 주문 상태가 어떤 순서 원하는, 그래서 "상태"라는 테이블을 가지고는 status.rb에서,이 추천했습니다 :오브젝트 관계에 문제가 있습니까?

class Status < ActiveRecord::Base 
    belongs_to :order 
    attr_accessible :name 

end 

을 그리고 이것은 내 order.rb입니다 :

class Order < ActiveRecord::Base 
    has_one :statuses 
end 
나는이 방법으로 호출,

<%= order.statuses.name%> 

그것은 작동하지 않기 때문에 : 내보기에서

는,이 같은 관련 상태를 호출 할

<% order.statuses.each_with_index do |order_status, index| %> 
<%= order_status.name%> 
<% end %> 

여전히 작동하지 않습니다.

uninitialized constant Order::Statuses

나는이 내 코드를 변경 :이 같은 오류가 있습니다

그것은해야

has_one : 상태

order.status.name

하지만이 오류가 있습니다 :

sqlite3를 ::되는 SQLException : 그런 칼럼 : statuses.order_id는 "상태"("상태".order_id = 5) 1

난 상태 만 관련 순서를 원하는 LIMIT하지만 SELECT * FROM 상태가 주문과 관련이 없습니다. 그렇게 할 수 있습니까? 상태

order.status.name

내장 된 루비 온 레일즈 복수화

:

답변

4

: 방금 단수 형태로 사용한다 has_one으로 관계를 정의하기 때문에

+0

O .... 나는 관계를 오해하고 있을지도 모른다. – DNB5brims

1

has_one해야한다. 당신 때문에 복수화의 오류를 얻고 order.status.name

0

. 당신은해야한다 : 당신은 belongs_to있을 수 있습니다처럼

class Order < ActiveRecord::Base 
    has_one :status 
end 

그러나, 그것은 소리 - 뒤로 has_one 관계를. 데이터베이스에 몇 가지 상태 (예 : 대기 중, 청구 됨, 배송 됨, 완료 됨) 만 있으면 상태는 has_many이며, 각 주문은 belongs_to 상태 여야합니다. 지금 설정 한 방식대로 각 주문에 대해 별도의 상태 개체가 있습니다. 이것은 당신이 원하는 것일 수도 있지만 모든 지위가 다른 것을 의미한다는 것을 이해하도록하십시오 (어쩌면 각각 순서를 설명하는 문장 또는 두 가지 일 수 있습니다).

관련 문제