레일 2 앱을 업데이트 중입니다. 우리는 아주 좋은 '또는'범위를 제공하는 fake_arel을 행복하게 사용해 왔습니다.rails 3 - 'or'scope
이제 레일 3을 사용하여이 방법을 찾을 수 없습니다.
우리는 다음과 같은 코드가 있습니다
scope.or(Event.horse, Event.dog, Event.trap).today
모델은 다음과 같습니다
class Event < ActiveRecord::Base
named_scope :horse, lambda { {:conditions => ["sport_category_id in (?)", SportCategory.find_horse_ids] }}
named_scope :dog, lambda { {:conditions => ["sport_category_id in (?)", SportCategory.find_dog_ids] }}
named_scope :trap, lambda { {:conditions => ["sport_category_id in (?)", SportCategory.find_trap_ids] }}
end
이 범위가 분리 될 필요가 있고 사방에 사용됩니다. 이 모델에는 실제로 조합으로 사용되는 수십 개의 스코프가 있으므로 모든 것을 다시 작성하는 것이 우리가 수행하고자하는 마지막 작업입니다.
당신이 '또는'함께 사용할 수 없다는 것이 이상하게 보입니다.
누군가 레일 3에서이 작업을 멋지게 처리 할 수있는 방법을 제안 할 수 있습니까? 아슬레를 사용한다고해도 나는 어떻게 보이지 않습니다. 우리는 다른 프로젝트에서 meta_where를 사용하고 있지만 그런 것도 제공하지 않습니다.
어쩌면이 부분을 어디에 넣어야할지 모르겠다. scope : find_scope, where (: event => [ 'horse', 'dog', 'trap'])) : ActiveRecord :: StatementInvalid : 이벤트라는 이름의 속성이 없습니다. ''events' 테이블에 존재합니다. – phil
그래서 제가 쓴 이유는 다음과 같습니다. 여기에 모델을 게시하면 이해할 수 있도록 도와 드리겠습니다. –
모델을 업데이트했습니다. 나는 당신이하는 일이 어떻게해서든지 기존의 범위를 호출하는 것을 볼 수 없다. 그것은 전체적인 문제이다. – phil