Ruby on rails 如何让attr_访问器真正在rails中工作?

Ruby on rails 如何让attr_访问器真正在rails中工作?,ruby-on-rails,ruby-on-rails-3.2,attr-accessor,Ruby On Rails,Ruby On Rails 3.2,Attr Accessor,下面是对我有用的代码片段 用户模型 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 所以我试着

下面是对我有用的代码片段

用户模型

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
所以我试着

class User < ActiveRecord::Base
  attr_accessor :full_name
end
class用户
我不知道还应该做些什么


提交表单时,is既不会在显示页面中显示完整的名称,也不会在数据库中更新相同的名称。

这是不正确的<代码>属性访问器
的工作原理类似

def full_name
  @full_name
end

def full_name=(value)
  @full_name = value
end

它只是为实例变量创建基本getter/setter。如果您需要任何类型的高级处理(在您的案例中是拆分/联接),您需要自己定义getter和setter方法。

我在想是否可以使用attr\u访问器。这并不能解释所遇到问题的解决方案,即问题。
  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
def full_name
  @full_name
end

def full_name=(value)
  @full_name = value
end