gpt4 book ai didi

ruby-on-rails - RoR 模型似乎不像 Ruby 类?

转载 作者:数据小太阳 更新时间:2023-10-29 07:21:26 24 4
gpt4 key购买 nike

如果我有一个 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)

如果有人能阐明这一点,我们将不胜感激。

非常感谢,

最佳答案

ActiveRecord 模型属性存储在名为@attributes 的实例变量中,它是一个散列。定义了 getter 和 setter 以供您访问此变量。

顺便说一句,这是在 Ruby 中连接字符串的推荐方式:

"#{first_name} #{last_name}"

有一个内置的“to_s”方法(在大多数对象上)允许您以这种方式将它们直接插入到字符串中。虽然您不能这样做:"string "+ 1 而不会引发错误,但您可以这样做:"string #{1}"

关于ruby-on-rails - RoR 模型似乎不像 Ruby 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12923991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com