こんにちは。
はい、Rubyではattr_writerを使うことで書き込み専用の属性を定義することができます。
通常、インスタンス変数に値を代入するためにはセッターメソッドを自分で記述する必要がありますが、attr_writer :nameと書くだけでRubyが自動的にdef name=(val); @name = val; endというメソッドを生成してくれます。
これにより、外部から値を設定することは可能ですが、読み取り用のメソッドは定義されないため、user.nameのように呼び出すとエラーになります。
つまり「値は渡せるが参照はさせない」という設計ができ、カプセル化を強化する際に役立ちます。
例えばユーザーの内部状態を外部から変更は許可するが、直接参照はさせたくない場合に有効です。
読み取り専用にしたい場合はattr_reader、読み書き両方を許可したい場合はattr_accessorを使い分けることで、柔軟にアクセス制御を設計できます。
attr_writerはシンプルながら、情報隠蔽を保ちながら必要な操作だけを公開するための便利な仕組みです。