2012-03-12 5 views
0

On Rails 3.2.1. 나는 rate (가격 수량을 나타냄)이라는 속성을 가진 Car이라는 모델을 가지고있다. 나는 Car과 함께 rate (교사가 얼마나 좋은가에 대한 평가를 제출하는) 메서드를 연결하는 ajaxful_rating 보석을 사용하고 있습니다. 내보기에 그래서레일 모델 속성과 보석 이름 충돌을 해결하는 방법은 무엇입니까?

, 내가있는 가격 수량 보여주기 위해 노력하고있어 혼란을 이름이 있기 때문에

<%= @car.rate %> 

내가 구문 오류가 발생합니다. rate 속성이 아니라 rate 속성을 호출하기를 Rails에 알리려면 어떻게해야합니까? 내 DB를 롤백하고 속성의 이름을 바꾸지 않고도이를 해결할 수있는 쉬운 방법이 있습니까?

답변

1

사용할 수 read_attribute :

@car.read_attribute(:rate) 

하지만 문제를 일으키고 혼란을 일으킬 수 있으므로 충돌을 해결하는 것이 좋습니다.

열의 이름을 바꾸려면 데이터베이스를 롤백 할 필요가 없습니다. create a new migration이 있어야합니다.

+0

고마워, 난 아직도 레일을 처음 사용하기 때문에 혼란 스러움에 대해 당신이 맞다고 생각해. 흥미 롭다. 나는 read_attribute()에 대해 몰랐다. –

1

글쎄, 우선, 속성 이름을 바꾸기 위해 데이터베이스를 롤백 할 필요가 없습니다. 이 변경으로 새로운 마이그레이션을 만들 수 있습니다 : How can I rename a database column in a Ruby on Rails migration? 이러한 종류의 변경이 수시로 필요하므로 레일스는 이러한 메커니즘을 처리합니다.

그러나 귀하의 질문에 대답하기 위해, 다른 해결 방법은 실제로이 같은 속성에 대한 액세스를 제공 자동차에 대한 새로운 방법을 작성하는 것입니다 :

 
def rate_price 
    read_attribute(:rate) 
end 
+0

제안 및 이전 도움말 링크를 제공해 주셔서 감사합니다. 레일에 상당히 익숙하지 않은 나는 길을 혼란스럽게하는 것에 대한 다른 포스터의 관점을 보았습니다. 그런 식으로해야만 rspec 테스트에 조금 영향을 미칠 것입니다. –

+0

당신의 구문이 틀립니다.'read_attribute'는 배열이 아닌 인자를 가진 메소드입니다. –

관련 문제