Tag Archives: Single

Rails form_for에서 STI(Single Table Inheritance) 문제 해결하기

rails_logo

레일의 폼헬퍼는 폼을 만드는 과정을 정말 쉽게 해결해 주는 마법사같은 역할을 합니다. 확실히 레일즈에서 라우트와 폼헬퍼의 유기적인 동작을 보면 왜 레일즈가 유명한지 실감하게 되는것 같습니다. 오늘 겪었던 STI로 인해 폼헬퍼의 form_for가 정상적으로 동작하지 못하는 문제의 해결방법을 기록차 정리합니다.

사실 문제를 해결하는 방법은 없습니다. 기본적으로 form_for가 유입경로에 따라 어디로 라우팅 해야 하는지를 자동으로 결정해 주지만 STI를 사용한 Model의 핸들링의 경우 수동으로 처리해 주어야 합니다. 심지어 홈헬퍼 레퍼런스에서도 이렇게 설명하고 있습니다.

sti_problems_form_for

결과적으로 :url과 :method를 이용하여 명시적으로 어디로 라우팅할지를 결정해 주어야 한다는 것입니다. Project라는 이름의 Model을 수정하는 경우라고 가정할 때 컨트롤러는 다음과 같습니다.

def edit
   @project = Project.find(params[:id])
end

그리고 뷰에서 form_for를 활용하는 코드는 다음과 같습니다.

<% form_for(@project, :as => :project, :url => {:controller => "projects",:action => "update"}) do |f| %>
    ...
    <%= submit_tag 'Update' %>
<% end %>

:url 설정에서 컨트롤러와 액션을 직접 선택한것을 볼 수 있습니다. 이 설정을 통해 적절한 method가 선택되며 라우팅 문제는 이것으로 해결할 수 있습니다. 하지만 project_TYPE_FIELDNAME처럼 데이터가 이상하게 들어오는 문제가 남아있습니다. 이부분은 :as를 통해 모델을 재정의할 수 있습니다.

참고

스타크래프트2 싱글플레이 크랙 + AI패치(난이도 조절 포함) + 종족 선택

사용자 삽입 이미지
스타크래프트 싱글플레이 크랙 + 적과 함께 싸울 수 있는 AI패치입니다.


– 1대1 혹은 1대3의 컴퓨터와의 플레이를 할 수 있습니다.
– 다양한 맵을 플레이 해볼수 있습니다.
– LazyLauncher를 사용합니다.
– 9가지 레벨의 AI 난이도를 선택할 수 있습니다.

* 설치 방법

– Starcraft 2 베타를 설치합니다. 설치경로는 “Program Files/ Starcraft II Beta”를 지켜야 합니다.
– 설치후에 1회 실행하여 최신버젼으로 업데이트 합니다.
– 크랙을 설치한 폴더에 덮어 씌웁니다.
– 맵의 압축을 해제합니다. 어느 위치던지 상관없습니다.
– 난이도를 변경할려면 Difficulty안의 파일을 “StarCraft II Beta\Mods\Liberty.SC2Mod” 위치에 덮어 씌웁니다.
– LazyLauncher를 실행합니다. 좀전에 압축푼 맵 파일을 선택하면 됩니다.

1047067728.zip1138309485.zip

1025663255.rar1116386776.rar1355607974.rar1045671826.rar1155568635.rar
* 추가 (AI 패치 5.5)
1273814673.xxx
* 추가 (새로운 맵들)
http://www.nibbits.com/sc2/maps/

* 추가 (AI  패치 6.1 – 일반모드/치팅모드)
1052999916.zip
* 추가 (베틀넷 로그인 우회 크랙 – 리플레이 감상용)
1039762747.zip
* 추가 (USMC23 런쳐 – 종족 선택 가능)
C:\users\<yourname>\AppData\Local\Blizzard Entertainment\Battle.net\cache
위치의 맵 파일을 다음으로 옮긴 후에 사용합니다.
C:\Users\<yourname>\Documents\StarCraft II Beta\Maps

1205966653.zip