18.03.12. 월

목차.

Rails Start o
Model Active Record 기초
Active Record Migrations
Active Record Validations
Active Record Callbacks
Active Record Associations
Active Record Query Interface
Active Model Basics
View Action View
레이아웃과 렌더링
Action View Form Helper
Controller Action controller
Rails Routing
심화주제 Active Support 코어 확장 기능
레일즈 국제화(i18n)API
Action Mailer Basics
Active Job Basics
레일즈 애플리케이션 테스트하기
레일즈 보안가이드
레일즈 애플리케이션 디버깅
레일즈 애플리케이션 설정하기
레일즈 커맨드 라인
애셋 파이프라인
레일즈에서 JS 사용하기
레일즈의 초기화 프로세스
상수 자동 읽기와 다시 읽기
레일즈에서 캐싱하기
Active Support Instrumentation
레일즈 애플리케이션 프로파일링
레일즈로 API 전용 애플리케이션 만들기
Action Cable 살펴보기
레일즈 확장하기 레일즈 플러그린 입문
Rails 와 Rack
레일즈 제너레이터와 템플릿
레일즈 엔진 입문
Ruby on rails 에 기여하기 Ruby on Rails 에 기여하는 방법
API 문서 작성 가이드라인
레일즈 가이드의 가이드라인
Maintenance Policy Maintenance Policy
릴리즈 노트 레일스 업그레이드 가이드
5.0
4.2
4.1

레일즈 시작하기

파일/폴더
목적
app/ 여기에는 애플리케이션의 컨트롤러, 모델, 뷰, 헬퍼, 메일러, 채널, 잡, 애셋이 위치하고 있습니다. 이후, 가이드에서는 기본적으로 이 폴더를 중심으로 설명을 진행합니다.
bin/ 여기에는 애플리케이션을 기동하거나, 배포하기 위한 레일스 스크립트 등의 스크립트 파일들이 포함되어 있습니다.
config/ 애플리케이션의 설정 파일(라우팅, 데이터베이스 등)이 위치하고 있습니다. 자세한 내용은레일스 애플리케이션 설정하기를 참조해주세요.
config.ru 애플리케이션 기동시에 필요한 Rack 기반 서버 용 설정 파일입니다.
db/ 현 시점의 데이터베이스 스키마와 데이터베이스 마이그레이션 파일이 들어있습니다.
Gemfile Gemfile.lock 레일스 애플리케이션에서 필요한 Gem들의 의존 관계를 기술되어 있습니다. 이 2개의 파일은 Bundler에서 사용됩니다. Bundler에 대한 자세한 설명은Bundler 웹사이트(한국어 번역)를 참조해주세요.
lib/ 애플리케이션에서 사용하는 확장 모듈이 들어갑니다.
log/ 애플리케이션의 로그를 포함합니다.
public/ 이 폴더의 밑에 있는 파일들은 외부(인터넷)에서 직접 참조할 수 있습니다. 정적인 파일이나 컴파일된 애셋들이 이 곳에 위치하게 됩니다.
Rakefile 이 파일에는 커맨드 프롬프트에서 실행 가능한 작업(Task)들이 기술되어 있습니다. 여기에서의 작업이란, 레일스 컴포넌트에 대한 작업을 의미합니다. 독자적인 Rake Task를 정의하고 싶은 경우에는 Rakefile에 직접 작성하게 되면 해당 작업이 너무 많은 권한을 가지기 때문에, 가급적이면 lib/tasks 폴더에 Rake용 파일을 추가해주세요.
README.md 애플리케이션의 개요를 설명하는 매뉴얼을 여기에 작성합니다. 이 파일에는 애플리케이션의 설정방법 등을 작성하여, 이 문서만 읽으면 누구라도 애플리케이션을 구축할 수 있도록 해야합니다.
test/ Unit테스트, 픽스쳐 등의 테스트 관련 파일들을 가집니다. 테스트에 대해서는레일스 애플리케이션을 테스트하기를 참조해주세요.
tmp/ 캐시, pid, 세션 파일 등의 임시 파일이 포함되는 폴더입니다.
vendor/ 서드 파티에 의해 작성된 코드는 모두 이곳에 넣습니다. 일반적인 레일스 애플리케이션이라면 gem 파일도 이 곳에 두게 됩니다.
.gitignore 이 파일은 git에게 관리하지 않을 파일 목록이나 패턴을 알려줍니다.Github - 파일 무시하기문서를 읽어보세요.

[의문점]


<%= form_for :article do |f| %>
  <p>
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </p>

  <p>
    <%= f.label :text %><br>
    <%= f.text_area :text %>
  </p>

  <p>
    <%= f.submit %>
  </p>
<% end %>
  • Migration 실행하기
    • 마이그레이션은 루비 클래스이다 . . . . . . --> rake db:migrate
    • SQL 문을 직접작성할필요가 없음.
    • 데이터베이스 종류에 의존하지 않음
    • 상속등 여러 기능 가능하다. 컬럼 추가(Migration)

$ bin/rails generate migration 
AddPartNumberToProducts

$ bin/rails generate migration 
AddPartNumberToProducts part_number:string

$ bin/rails generate migration 
AddUserRefToProducts user:references
  • link_to 레일즈 내장 매소
  • 가장기본적인 CRUD 내용인데 , 알차다 .
<h1>Listing Articles</h1>
<%= link_to 'New article', new_article_path %>
<table>
  <tr>
    <th>Title</th>
    <th>Text</th>
    <th colspan="3"></th>
  </tr>

  <% @articles.each do |article| %>
    <tr>
      <td><%= article.title %></td>
      <td><%= article.text %></td>
      <td><%= link_to 'Show', article_path(article) %></td>
      <td><%= link_to 'Edit', edit_article_path(article) %></td>
      <td><%= link_to 'Destroy', article_path(article),
              method: :delete,
              data: { confirm: 'Are you sure?' } %></td>
    </tr>
  <% end %>
</table>
  • 댓글 기능 추가 모델생성하고파 (Association)

$ bin/rails generate model Comment commenter:string body:text article:references

Model

Active Record 기초


# 모든 사용자 컬렉션을 반환한다
users = User.all

# 첫번째 사용자를 반환한다
user = User.first

# David라는 이름을 가지는 첫번째 사용자를 반환한다
david = User.find_by(name: 'David')

# 이름이 David이고, 직업이 코드 아티스트인 사용자를 모두 반환하고,
# created_at 컬럼을 기준으로 내림차순으로 정렬한다.
users = User.where(name: 'David', occupation: 'Code Artist').order('created_at DESC')
  • 컨트럴러에서 작성한 내 코드 언어는 rails 였구나. --> rails API 를 사용한거였어.
  • Rails API --> CRUD 로 있구나

    • 그걸 그냥 따라했었던것
  • query 문을 가져오는 Rails API 도 있어

  • From now on , I m just writing down in Eng. Cuz lots of error occur using Korean.

유효성 검사, 콜백, --> 추후 고민

  • Rails에는 데이터베이스 스키마를 관리하기 위한 도메인 특화 언어(DSL: Domain Specific Language)가 있으며, 마이그레이션(migration)이라고도

results matching ""

    No results matching ""