2014-03-05 1 views
1
get '/watch/:id' do |id| 
    @results = Twitchtvst.all(:fields => [:Twitchtv ], 
       :conditions => { :user_id => "#{id}" }   
       ) 
    #p @results.inspect 
    @results.each do |result| 
     puts result.id 
    end 

    erb :mystream 
    end 

이 오류 메시지가 나타나면 불변 리소스를 지연로드 할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?Ruby DataMapper :: ImmutableError

오류 메시지는 다음과 같습니다

DataMapper::ImmutableError at /watch/1 
Immutable resource cannot be lazy loaded 
+2

어떤 오류 메시지가 나타 납니까? – Severin

+0

변경할 수없는 리소스를 지연로드 할 수 없습니다. – user2945872

답변

1

공식 documentation에 따르면 선택한 컬럼의 기본 키를 포함하지 않는 경우, 당신은 수 없음을

주 DataMapper가이를 유지하는 방법을 알 수 없기 때문에 반환 된 리소스를 수정할 수 있습니다. DataMapper는 그렇게하려는 경우 DataMapper :: ImmutableError를 발생시킵니다.

여기에 아무것도 수정하지 않는다는 것을 알고 있지만, 같은 규칙이 느린 로딩에 적용된다고 생각합니다. 그래서 다음과 같이 시도해 보도록 권합니다.

@results = Twitchtvst.all(:fields => [:Twitchtv, :id], 
      :conditions => { :user_id => "#{id}" }   
      ) ode here 

추가 필드로 id를 기록하십시오.