質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

解決済

2回答

1172閲覧

rails modelのカラムにセットした値が予め定義した型に自動変換されるのはなぜでしょうか

020n

総合スコア36

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2018/12/09 05:56

以下で120.1という値をセットしたのに勝手に120になるのはなぜでしょうか。
そういうものと言われればそういうものなのかもしれませんが。。。

ruby

1#schema.rb でのwidthの定義 2t.integer "width", null: false 3 4#rails console での実験結果(imgは上記widthが含まれるmodelの一要素) 5irb(main):008:0> img['width'] = 120.1 6=> 120.1 7irb(main):009:0> img['width'] 8=> 120

解説いただけると嬉しいです。
また、こうすれば自力で調べられるようになるよ!というものがあれば、それを教えて頂けるともっと嬉しいです。

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

rubyの変数には型はありません。どのclassのインスタンスでも代入できますし、そのあと別のclassのインスタンスを代入し直すことも可能です。
配列やHashは必要ならいくらでもサイズが大きくなります。

という意味でなら rubyでは箱がない(勝手に箱のサイズが変わる) は正しいです。

でも、classそのものは型があります。Integerのclassには整数しか入りません。

で、
t.integer "width", null: false

と定義された width は rubyの変数(は言いすぎかも)であると同時に、Databaseのカラム(との仲立ち)でもあります。databaseはrubyではないので、型があります。
ですのでActiveRecodeが型を合わせて代入してくれています。

投稿2019/07/02 22:25

winterboum

総合スコア23347

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

020n

2019/09/14 08:42

遅くなりましたがご回答ありがとうございました!
guest

0

自動的にinteger型になるのは動的型変換と呼ばれています。
整数しか入らない箱に少数を入れようとしても箱が小さすぎてはいりません。その時に整数に勝手に直してくれます。

投稿2018/12/11 06:28

masato338

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

020n

2018/12/14 03:22

rubyでは箱がない(勝手に箱のサイズが変わる)と思っているのですが、railsのモデルクラスで固定の箱にするような仕組みが実装されているのでしょうか。。。? もし分かれば教えて頂けると助かります!????????????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問