0

ここに私のために働いているコードスニペットがあります

ユーザーモデル

class User < ActiveRecord::Base

  def full_name
    [first_name,last_name].join(" ")
  end

  def full_name=(name)
    split = name.split(" ",2)
    self.first_name = split.first
    self.last_name = split.last
  end
end

次に、ここにビューファイルがあります

ファイルを表示

<h1>
    <%= @user.full_name %>
</h1>

ファイルを編集

<div class="field">
    <%= f.label :full_name %><br />
    <%= f.text_field :full_name %>
</div>

これは私にとっては完璧に機能します。

私はattr_accessorが同じように動作することを読みました

  def full_name
    [first_name,last_name].join(" ")
  end

  def full_name=(name)
    split = name.split(" ",2)
    self.first_name = split.first
    self.last_name = split.last
  end

だから私は

class User < ActiveRecord::Base
  attr_accessor :full_name
end

他に何をすべきかわかりません。

表示ページに完全な名前を表示することも、フォームが送信されたときにデータベースで同じことを更新することもありません。

4

1 に答える 1

-1

それは正しくありません。attr_accessorのように動作します

def full_name
  @full_name
end

def full_name=(value)
  @full_name = value
end

インスタンス変数のプリミティブなゲッター/セッターを作成するだけです。何らかの高度な処理 (この場合は分割 / 結合) が必要な場合は、ゲッター メソッドとセッター メソッドを自分で定義する必要があります。

于 2012-09-18T11:44:17.213 に答える