2011-08-03 3 views
0

레일 3 이전에는 find까지 확장 할 플러그인을 만드는 것이 상대적으로 쉽습니다. 에있는 find 메소드 자체를 기본적으로 덮어 쓰고 필요하면 super을 호출하십시오.레일스 3가 확장 한 플러그인을 어디서 만들면 좋을까요?

레일즈 3에서 레일즈 3 (특히 레일즈 3.1을 사용하고 있습니다.)이 비슷한 것을하고 싶습니다. 문제는 많은 이전의 find 메소드가 where, order, limit 등과 같은 스코프를 사용하지 않기 때문입니다. Rails 소스의 어떤 지점에서 기본 동작을 대체해야합니까?

나는 이것보다 조금 복잡 할 것이라고 확신하지만, ActiveRecord::Base에있는 construct_finder_arel 방법이 적절하다고 생각되는 가장 가까운 것으로 생각됩니다.

답변

-1

Arel 사용 여부에 상관없이 Rails 소스를 파기 한 후 find_by_sql 메소드가 검색을 수행하는 모든 모델에서 호출됩니다. 다음과 같이 을 통해 확장 할 수 있습니다.

find_by_sql_with_customization(*args) 
    results = find_by_sql_without_customization 
    # do something with results here 
    results 
end 

alias_method_chain :find_by_sql, :customization 
+0

올바른 답을 고려한 이유는 확실하지 않습니다. 의견서에 설명하기를 신경 쓰는지, 인터넷 익명 뒤에 숨기를 원하나요? –

관련 문제