rails 独学して軽くにちゃんまとめつくる

【rails】 モデルで最初から何個かとりだしたり、何番目から何番目を取り出す

User クラスの先頭から3番目までを取り出したいときはこうする

User.where(id: 1..3)

#SQL文  SELECT "users".* FROM "users" WHERE ("users"."id" BETWEEN ? AND ?)  [["id", 1], ["id", 3]]


[#<User:0x000000044cf410
  id: 1,
  name: "tarou tanaka",>,
 #<User:0x000000044cee20
  id: 2,
  name: "Foster Boyer",>,
 #<User:0x000000044cece0
  id: 3,
  name: "Miss Winnifred Jacobs">]

2点ドットを使えば連番を自動生成してくれるので上のコードは ID が1から3までのデータを収集してくれる。モデルの id は1から始まるので先頭を取り出したいときは 1 なので注意。

これを応用させて 2番目から5番目までを取り出してみると

User.where(id: 2..5)

とするそしたら2番目から5番目までがでてくる。

~応用例~

複数ある投稿記事きれいにレイアウトするときに使える。先頭とそれ以降のを切り分けて別のレイアウトにするとか。これは

f:id:mooooooooooriiiiii:20170415111609p:plain

  <% hajime_article = Article.first %>
  <div class="col-sm-12 thumbnail">
    <p><%= link_to image_tag(hajime_article.pic), hajime_article %></p>
    <div class="caption text-center">
      <h4><%= link_to hajime_article.title, hajime_article %></h4>
      <p><%= link_to hajime_article.site_name, hajime_article, class:"caption" %></p>
    </div>
  </div>
  <% Articles.where(id: 1..8).each do |article| %>
    <div class="col-sm-6 article" style="padding: 5px;">
      <span></span>
        <%= link_to image_tag(article.pic, class:"img-responsive"), article %>
        <div class="inner-article text-center">
          <h5><%= link_to article.title, article %></h5>
        </div>
    </div>   
  <% end %>

こんな感じで作っている。初めのとそれ以降のを別のレイアウトにすることによって見栄えよくさせているのである。