나는 장고에 대해 여러 가지 필터 방법을 실행할 수 있습니다. 예를 들어 Item.all.filter(foo="bar").filter(something="else")
입니다.레일에서 ActiveRecord 쿼리 필터링
그러나 이것은 레일스에서 그리 쉬운 일이 아닙니다. Item.find(:all, :conditions => ["foo = :foo", { :foo = bar }])
수익률이 작동하지 않습니다 의미 배열 :
Item.find(:all, :conditions => ["foo = :foo", { :foo = 'bar' }]).find(:all, :conditions => ["something = :something", { :something = 'else' }])
def combine(array1,array2)
conditions = []
conditions[0] = (array1[0]+" AND "+array2[0]).to_s
conditions[1] = {}
conditions[1].merge!(array1[1])
conditions[1].merge!(array2[1])
return conditions
end
사용법 :
하는 array1 = [ "foo는 = foo는"{: foo는 = '바'}] 배열 2 = [ "뭔가
그래서 나는이 기능을 함께했다 = : something ", {: something = 'else'}] 조건 = 결합 (array1, array2) items = item.find (: all, : conditions => 조건)
이것은 꽤 잘 작동했습니다. 그러나 임의의 수의 배열을 결합하거나 기본적으로 쓰기를 위해 단축 할 수 있기를 원합니다.
conditions = combine(combine(array1,array2),array3)
아무도 도와 줄 수 있습니까? 미리 감사드립니다.
그래, 내가 원하는 바로 그 것이다. 나는 스크린 캐스트를 보았고 그것은 나에게 완전한 의미를 가졌다. 그러나 코드를 실행하자마자 명명 된 범위가 정의되지 않은 메서드라는 오류가 발생했습니다. 그런 다음 레일스 1.8으로 작업 중이라는 것을 알게되었으므로 레일을 2.3.something으로 업데이트하고 여전히 동일한 오류가 발생했습니다 .... 우물로 명명 된 스코프가 너무 좋았습니다 :/ – user94154
레일을 동결했다면, 코드는 여전히 이전 버전의 레일즈를 사용하고 있습니다. Rails 1.8은 존재하지 않았으므로 Ruby 1.8을 의미해야합니다. rails -v는 명령 줄에서 Rails의 버전을 알려주는 명령입니다. script/about은 응용 프로그램 환경에 대해 자세히 알려줍니다. –
루비 스크립트/약을 인식하지 못했습니다. Rails의 관점에서 고정 된 것은 무엇입니까? – user94154