Rails 3.1부터 prototype.js가 아닌 jQuery와 CoffeeScript가 Default로 탑재되어 있다.
만약 jQuery가 아닌 prototype.js를 계속 사용하고자 할 경우,
rails new [APP_NAME] -j prototype
해주면 된다.
새로 추가된 Gems
sass: haml에 포함되어 있던 sass가 독립되어 나왔다.
coffee-script
uglifier: JS를 하나의 파일로 합쳐준다.
jquery-rails
디렉토리 구조 변경
Public아래에 있던 Javascript, Stylesheets, Images가
/app/assets/ 로 이동되었다.
그러므로 웹엔진(Nginx등)에서 Js, Css, Image를 Rails한테 안넘기고 직접 처리하도록 세팅이 되어 있었다면, 관련 부분은 수정이 있어야 한다
Sprockets
application.css, application.js에 보면
//= require jquery
처럼 주석처리된 require들이 있는데, 이건 주석이 아니라 sprockets의 require(include)하는 문법이므로 해당 구문을 삭제하면 include가 안된다.
Migration
migration file의 change 메소드가 추가되었다.
과거에는 up, down으로 메소드가 분리되어 있었지만, change로 통합되었다.
하지만 종종 제대로 동작하지 않을때도 있는데 그럴땐 up, down을 만들어서 사용하면 된다.
그리고 :belongs_to가 추가되었는데, 과거 relationship을 같게 될 경우 직접 index key(article_id:integer)를 만들어 줬었다.
3.1 에서는 belongs_to를 이용하면 되는데.
rails g scaffold comment article:belongs_to body:text
이렇게 써주면되며, belongs_to로 만들면 add_index도 시켜준다.
Console
콘솔에서 DB Query가 노출이 되었는데.. 상황에 따라선 이게 과잉친절이 될 수 도 있을 듯 하다.
Active Record
:has_many에서 :through를 다중깊이까지 사용할 수 있게 되었다.
그리고 :through에서 :dependent 도 지원을 한다.
:as 가 추가되었다.
default_scope가 block으로 처리할 수 잇게 되었으며 lambda, method를 사용할 수 있다.
개인용 컴퓨터에 대한 새로운 아이디어를 얻기 위해 나를 도와 주셔서 감사합니다. 나는 또한 최고의 상태로 노트북을 유지하는 최선의 방법 중 하나가 하나의 컴퓨터의 맨 위에 일치 아마도 하드 플라스틱 형 재료의 경우, 또는 쉘 있었던 것으로 확신합니다. 그들이 자연 케이스에 완벽하게 맞도록 제작되므로 보호 장구 이런 종류의 독특한 모델이 될 것이다. 당신은 공급 업체에서 직접 이들을 구입하거나 그들이 당신의 노트북을위한 경우 타사의 장소를 통해, 그러나 자사의 모든 노트북은 시장에 대한 지출이있을 수 있습니다. 마찬가지로 이전, 귀하의 조언에 감사드립니다.
코드 설명을 세세하게 하면 싫어하실것 같아 간략하게 코드 설명을 하겠습니다.
Subscript의 writer_id를 이용하는 새로운 관계(belongs_to)를 만듭니다.
그리고 그 만든 관계명을 User에서 writer_id로 User를 불러와야 하는 곳(:subscriptions)의 :source로 써준 것이죠.
좀 찜찜하지만 이런식으로도 구현할 수 있습니다.
class User < ActiveRecord::Base
has_many :subscripts, :dependent => :destroy def subscriptions ids = self.subscripts.collect { |s| s.writer_id } User.find(ids) end
end
확장성의 제약이 있겠지만, 사용하는것에는 큰 문제점이 없을듯 하네요
하지만.. 그래도 역시 찜찜하죠? ㅎㅎ
여담>
지금 딱 새벽 6시 20분이네요. 오랜만에 와이프 아침밥이나 해주고 자야겠네요 ㅎㅎ (라고 말하고 기절하기)
댓글을 달아 주세요