gpt4 book ai didi

ruby-on-rails - attribute.present 有什么区别?和属性?

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

我正在学习 Rails,并且我正在开发一个非常基本的 RSVP 应用程序,如果用户输入了姓名和电子邮件地址,我的用户中会出现一个名为 rsvp? 的方法模型返回 true

如果我的方法定义为:

def rsvp?
name.present? && email.present?
end

我得到的结果好像是:

def rsvp?
name? && email?
end

name.present?name? 是一样的吗?有人告诉我 name.present? 不仅会检查 nil 值,也适用于空字符串值。但似乎 name? 完成了同样的事情(测试了名称和电子邮件、名称但没有电子邮件等的所有四种排列)

最佳答案

present?返回 blank? 的反义词.它们是 Ruby 核心的 Rails 扩展 Object . .present? 将返回 false 如果正在测试的值为 nil, "", {} false[] 等...基于类型 (Array, HashString 等...) 扩展 Object

name? 这样的方法基于你的模型的属性,比如 :name 实际上是通过 method_missing 传递的。 ActiveRecord::AttributeMethods 中的方法,然后由 ActiveModel::AttributeMethods 处理并最终由 this class 处理.

所以,它们大部分是相同的(对于某些列类型,blank? 实际上被调用;相同的blank?present? 上面),但它们并不相同,因为 ? 后缀方法会根据列类型。

关于ruby-on-rails - attribute.present 有什么区别?和属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12119289/

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