배운 것 총결산

14000 단어 RubyRails
나는 배운 것을 보충하여 기록할 것이다.
【참고】ActiveRecord 시작

where 방법


where 메서드는 ActiveRecord 메서드 중 하나입니다.모델where(조건)와 같이 매개 변수 부분에 조건을 지정하여 표 조건과 일치하는 기록 실례를 수조 형식으로 얻을 수 있다.
where 방법을 연속으로 기술함으로써 여러 조건에 부합되는 기록을 얻을 수 있다.
[1] pry(main)> Tweet.where('id < 3')
  => [#<Tweet id: 1, image: "test1.jpg", text: "いい景色だ。", created_at: "2014-12-06 00:00:00", updated_at: "2014-12-06 00:00:00", user_id: 1>,#<Tweet id: 2, image: "test2.jpg", text: "Thank you!", created_at: "2014-12-07 00:00:00", updated_at: "2014-12-07 00:00:00", user_id: 2>]
  # idが3未満のtweetsテーブルのインスタンスを配列で取得

  [2] pry(main)> Tweet.where('id < 3').where(user_id: 1)
  => [#<Tweet id: 1, image: "test1.jpg", text: "いい景色だ。", created_at: "2014-12-06 00:00:00", updated_at: "2014-12-06 00:00:00", user_id: 1>]
  # idが3未満かつuser_idが1のtweetsテーブルのインスタンスを配列で取得

연관성


관련이란 관리 모델 간의 관련 기능을 가리키며 미리 정의를 통해 크로스 모델의 데이터를 더욱 간단하게 호출할 수 있다.
연관성을 이용하기 위해서는 먼저 모델 간의 관계를 정의해야 한다.연관을 사용하려면 다음 두 조건이 충족되어야 합니다.
①모델 클래스hasmany와 belongsto 등의 정의가 있다
② 소속 표 소속 유명일렬 id가 있습니다
예를 들어 트위터의 기고인과 트위터의 관계는 다음과 같다.


User 모델의 측면에서 볼 때 어떤 사용자가 만든 트위터는 몇 가지 상태가 있다고 할 수 있다.이런 상태는 하스맨의 관계로 불리는데 이번에는'User has many Tweets'의 상태라고 할 수 있다.
User.rb
class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  has_many :tweets
end
또한 Tweet 모델의 관점에서 볼 때 모든 트위터는 어느 사용자에 속한다고 할 수 있다.이런 상태는 belongs to 관계라고 하는데 이번에는 "Tweet belongs to User"상태라고 할 수 있습니다.
Tweet.rb
class Tweet < ActiveRecord::Base
  belongs_to :user
end
관련을 정의하면 크로스 모델의 데이터를 더욱 직관적으로 호출할 수 있다.
예를 들어 아래처럼 간단하게 쓸 수 있다.
이전의 상황
where 방법 사용하기
$ rails c  
[1] pry(main)> user = User.find(1)
[2] pry(main)> Tweet.where(user_id: user.id)
=> [#<Tweet id: 1, image: "http://photo1.jpg", text: "いい景色だ。", created_at: "2014-12-06 09:00:00", updated_at: "2014-12-06 09:00:00", user_id: 1>,
#<Tweet id: 1, image: "http://photo2.jpg", text: "楽しい思い出は消えない。", created_at: "2014-12-06 10:00:00", updated_at: "2014-12-06 10:00:00", user_id: 1>]
연관 사용 시
User 모델에 User has many Tweets 상태의 연관이 정의되어 있기 때문에 User 모델의 인스턴스입니다.트위터를 올리기만 하면 이 실례가 가지고 있는 트위터를 얻을 수 있다.
$ rails c
[1] pry(main)> user = User.find(1)
[2] pry(main)> user.tweets
=> [#<Tweet id: 1, image: "http://photo1.jpg", text: "いい景色だ。", created_at: "2014-12-06 09:00:00", updated_at: "2014-12-06 09:00:00", user_id: 1>,
#<Tweet id: 1, image: "http://photo2.jpg", text: "楽しい思い出は消えない。", created_at: "2014-12-06 10:00:00", updated_at: "2014-12-06 10:00:00", user_id: 1>]

다중 모드 관련


다면체는 관련이 있는 약간 고급스러운 응용이다.하나의 연관 정의만으로 모델이 여러 모델에 속해 있음을 나타낼 수 있습니다.예를 들어 사용자의 이미지나 기업의 이미지에 이미지를 업로드합니다.업로드된 이미지는 사용자의 이미지나 기업의 이미지와 연결됩니다.
class Image < ActiveRecord::Base
  belongs_to :imageable, polymorphic: true
end

class Company < ActiveRecord::Base
  has_many :images, as: :imageable
end

class User < ActiveRecord::Base
  has_many :images, as: :imageable
end
테이블 열은 다음과 같습니다.

ActiveRecord 다이얼 백


ActiveRecord 콜백은 생성/저장/업데이트/삭제/검증 등 특정 이벤트가 발생할 때 호출되는 방법입니다.
콜백 사용 가능
객체 작성
  • before_validation
  • after_validation
  • before_save
  • around_save
  • before_create
  • around_create
  • after_create
  • after_save
  • 객체 업데이트
  • before_validation
  • after_validation
  • before_save
  • around_save
  • before_update
  • around_update
  • after_update
  • after_save
  • 대상의destroy
  • before_destroy
  • around_destroy
  • after_destroy
  • 업데이트 방법


    업데이트는 ActiveRecord 메서드 중 하나입니다.모델 실례에 업데이트 방법을 사용하면 매개 변수에서 기록을 업데이트할 수 있습니다.
    【예】
    [1] pry(main)> tweet = Tweet.create(user_id: 1, text: "Hello", image: "test.jpg")
    => #<Tweet id: 1, user_id: 1, text: "Hello", image: "test.jpg", created_at: "2014-12-10 00:00:00", updated_at: "2014-12-10 00:00:00">
    [2] pry(main)> tweet.update(text: "Thank you!")
    => true
    [3] pry(main)> tweet
    => #<Tweet id: 1, user_id: 1, text: "Thank you!", image: "test.jpg", created_at: "2014-12-10 00:00:00", updated_at: "2014-12-10 00:01:00">
    

    first_or_initialize 방법


    where 방법과 함께 사용합니다.where 검색 조건의 기록이 있으면 그 기록의 실례를 되돌려줍니다. 만약 새로 만든 실례가 없다면.
    【예】
    user = User.where(nickname: "Shinbo").first_or_initialize
    => #<User id: 1, nickname: "Shinbo">
    

    order 방법


    데이터베이스에서 데이터를 가져올 때 데이터를 정렬하는 방법을 지정할 수 있습니다.
    매개변수는 정렬 데이텀의 열과 DESC(내림차순) 또는 ASC(오름차순) 두 가지를 지정하여 순서를 지정할 수 있습니다.
    モデル名.order('カラム名 順序')
    

    limit 방법


    limit 방법은 데이터를 얼마나 얻을 수 있는지 지정할 수 있으며, 매개 변수에서 얻을 수 있는 개수를 지정합니다.
     モデル名.limit(取得件数)
    

    average 메서드


    average 방법은 average 방법의 실례를 사용하여 목표 표의 열을 기호 형식의 매개 변수로 가져옵니다.소수점이 있는 상태에서 이 값의 평균 값을 되돌려줍니다.
    students = Student.all
      students.average(:score)
      #=> 小数点まで含んだ平均点
    

    round 방법


    숫자의 소수점 이하를 반올림하다.
    10.4.round
      #=> 10
    
      10.5.round
      #=> 11
    

    그룹 방법


    지정된 열에서 테이블 레코드를 요약한 상태에서 가져옵니다.
    【예】
    Review.group(:product_id)
      Review Load (10.5ms)  SELECT `reviews`.* FROM `reviews` GROUP BY product_id
    => [#<Review id: 1, nickname: "まいき", rate: 1, review: "おもしろい", product_id: 21, created_at: "2014-11-05 16:03:39", updated_at: "2014-11-05 16:03:39", user_id: 4>,
      #<Review id: 3, nickname: "えいちゃん", rate: 10, review: "感動した!また見たい", product_id: 22, created_at: "2014-11-05 16:03:39", updated_at: "2014-11-05 16:03:39", user_id: 4>,
      #<Review id: 13, nickname: "ごとう", rate: 10, review: "思っていたより良かった", product_id: 23, created_at: "2014-11-05 16:03:39", updated_at: "2014-11-05 16:03:39", user_id: 4>
    

    count 방법


    ount 방법은 수조 등 원소수를 되돌려주는 방법입니다.그룹 방법을 계속 사용하면 집계 후의 기록 수를 얻을 수 있다.실행 예는 다음과 같습니다.
    Review.group(:product_id).count
    => {21=>2, 22=>1, 23=>4}
    

    order。count(열 이름)


    count 방법의 매개 변수에서 열 이름을 지정할 수 있습니다.그리고order 방법으로count열 이름으로 정렬할 수 있습니다.이것은 열의 기록 수를 정렬하는 것을 의미한다.

    keys 방법


    산열에는 키스라는 방법이 있다.이것은 산열 키만 꺼내서 배열로 되돌려 주는 방법이다.

    맵 방법


    map 방법은 그룹 클래스에서 정의된 실례적인 방법입니다.map 방법은 배열된 내용을 하나하나 꺼내서 네모난 상자를 반복적으로 실행하는 문법입니다.그런 다음 블록 반환 값을 수집하는 새 배열을 만듭니다.
    配列オブジェクト.map {|ele| ブロックの処理}
      # eleには配列の要素が1つずつ代入される
      # ブロックの処理は配列の要素の数だけ繰り返し実行される
    

    좋은 웹페이지 즐겨찾기