【发布时间】:2012-10-16 21:50:42
【问题描述】:
如果我有一个 RoR 模型 person.rb 如下:
class Person < ActiveRecord::Base
attr_accessible :first_name, :last_name
validates :first_name, presence: true
validates :last_name, presence: true
end
我似乎无法执行以下任何操作:
@full_name = @first_name + " " + @last_name
或
def full_name
@first_name + " " + @last_name
end
据我了解,这两个都应该与常规的 ruby 类一起使用。
我做了一些阅读,下面似乎是要走的路:
def full_name
self.first_name + " " + self.last_name
end
我可以完成这项工作,但我真的很想了解为什么我似乎无法以任何方式引用实例变量(也不能创建新变量)。
ActiveRecord::Base 是否对实例变量做了一些非常有趣的事情?它是否将模型(在这种情况下为 Person 类)限制为仅是数据库中内容的包装器?
我似乎也无法定义 attr_accessor...但我可以很好地设置 first_name 和 last_name(不仅通过批量分配,而且 p = Person.new; p.first_name = foo)
如果有人能对此有所了解,将不胜感激。
非常感谢,
【问题讨论】:
标签: ruby-on-rails ruby oop activerecord ruby-on-rails-3.2