Ruby: 2.4.1
Rails: 5.1.3
事象
Userモデル内でattr_accessorとattr_writerを記述すると、なぜかデータがUpdateできなくなりました。
前提
Userモデルがあり、nameというカラムが存在しています。これをviewでは姓(family_name)と名(first_name)に分けて表示・入力したいので、Userモデル内では下記のように記述しています。
ruby
1# app/models/user.rb 2attr_accessor :name 3attr_writer :family_name, :first_name 4before_validation :set_name 5 6def set_name 7 self.name = "#{@family_name} #{@first_name}" 8end
ruby
1# app/views/users/edit.html.erb 2<%= f.text_field :family_name %> 3<%= f.text_field :first_name %>
この状態でfamily_nameとfirst_nameを記入し、更新ボタンを押しても更新されません。しかし、「attr_accessor :name」を消すと更新されます。
「attr_accessor :name」を消せばいいじゃないか、となると思いますが、そうするとrails testで「undefined method `name='」と出てしまいます。
そもそもattr_accessorあたりの理解が足りないのだと思うのですが、、ご教授いただけると幸いです。
あなたの回答
tips
プレビュー