attempts
タイプのデータベースに属性がありますinteger
(初期値は0です)
私がするとき@user.attempts += 1
、それは投げますTypeError: can't convert Fixnum into String
したがって、railsはデータ型に従って属性を自動的に変換しないと結論付けます。
私がする時
@user.attempts.to_i +=1
それは投げますNoMethodError: undefined method 'to_i=' for "0":String
そして私がそうするとき、
@user.attempts.to_i = @user.attempts.to_i + 1
再び投げNoMethodError: undefined method 'to_i=' for "0":String
ます。
この、
@user.attempts = @user.attempts.to_i + 1
正常に動作します。
その理由は、私がそうすると@user.attempts.to_i + 1
、実際@user.attempts
に左側が変わるからだと思います。
誰かがこの行動に光を当てることができますか?
編集
移行
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :email
t.string :email_pass
t.integer :attempts
t.timestamps
end
end
end
テーブルスクリプトを作成する
-- Table: users
-- DROP TABLE users;
CREATE TABLE users
(
id serial NOT NULL,
email character varying(255),
email_pass character varying(255),
attempts character varying(255),
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
CONSTRAINT users_pkey PRIMARY KEY (id )
)
WITH (
OIDS=FALSE
);
ALTER TABLE users
OWNER TO jashwant;
attempts
dbでは文字タイプであることがわかります。
したがって、そのデータ型を変更する適切な方法は何である必要があります。そして、私は私の最初の質問でも際立っています、その型変換の理由は何ですか?