0

モデル内で ActiveRecord 属性の値を割り当てようとしていますが、何らかの理由で設定できません。

たとえば、AccountModel があり、これには Attribute がありますname

コントローラーまたはコンソール (のようにuser.name = "John") から設定すると、すべて正常に動作します。しかし、モデル内から設定しようとすると、

def set_name(new_name)
  name = new_name
end

それは機能しません。一方、次のように名前を取得します

def get_name
  name
end

うまく動作します。私は何かを逃していますか?Ruby 2.0.0-p247 と Rails 4.0.0 を使用しています。この例は実際の例ではないことに注意してください。問題を明確にするために単純にしようとしました。

よろしく、 マンディ

4

4 に答える 4

1

モデル内で save を呼び出すだけで、 self.save を実行する必要はありません。割り当てる必要がある場合にのみ、self.attribute を使用します。

于 2013-08-01T12:17:28.047 に答える
0

試す

    def set_name(new_name)
      self.name = new_name
      self.save!
    end

次に、コントローラーからインスタンスメソッドを呼び出すだけです

user.set_name('foo')
于 2013-08-01T10:42:13.400 に答える