takumiblog

新人エンジニアの技術ブログ

学習日記5日目

学習したこと

テーブル作成時に、unsigned: trueを追加する

以下のように、unsigned: trueを追加する時で、扱える値の範囲を変更することができる。

create_table :users, unsigned: true do |t|
      t.integer :post

      t.timestamps
    end

基本的にデータ型(数値型)は、最小値がマイナスから扱える範囲が決められている。
例:bigint型

-9223372036854775808~9223372036854775808
unsigned: trueを指定することで、最小値の値が、0からになり、負の値が扱えない代わりに、正の数の扱える値が倍になる。
例:biginit型(unsigned: true)
0~ 18446744073709551615

あらかじめ負の値を使用しないことが分かっている場合は、unsigned: trueを使用する方が、無駄なく使用することができる。

多対多のアソシエーションの紐付け

多対多のアソシエーションの紐付けの時に以下のように記述すると便利だよという話。

Class User 
  has_many :posts
  has_many :comments, through: :posts
end

このように紐付けを行うことで、user.commensと記述するだけで、そのユーザーに関連したコメントを取得することができる。

resourcesのカスタムアクションについて

resourcesは、あらかじめ使えるアクション名が決められている。
(index,showとか)
resourcesにあらかじめ決められていないアクション名を使用したときは、以下のように記述することで、使用できるようになる。

resources :users do
  collection do
    get : hoge_users
  end
end

参考資料

データ型と最小値/最大値