gpt4 book ai didi

ruby-on-rails - 检查 Rails 快捷方式中是否不为零且不为空?

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

我有一个用户显示页面,每个属性应该只在该页面上可见,如果它不是 nil 也不是空字符串。下面我有我的 Controller ,不得不为每个变量编写同一行代码 @user.city != nil && @user.city != "" 是很烦人的。我不太熟悉创建自己的方法,但我能以某种方式创建一个快捷方式来执行如下操作:@city = check_attr(@user.city)?或者有没有更好的方法来缩短这个过程?

users_controller.rb

def show 
@city = @user.city != nil && @user.city != ""
@state = @user.state != nil && @user.state != ""
@bio = @user.bio != nil && @user.bio != ""
@contact = @user.contact != nil && @user.contact != ""
@twitter = @user.twitter != nil && @user.twitter != ""
@mail = @user.mail != nil && @user.mail != ""
end

最佳答案

有一种方法可以为您做到这一点:

def show
@city = @user.city.present?
end

present? 方法测试 not-nil 加上有内容。空字符串、由空格或制表符组成的字符串被视为不存在。

由于这种模式很常见,因此在 ActiveRecord 中甚至有一个快捷方式:

def show
@city = @user.city?
end

这大致是等价的。

请注意,与 nil 进行测试几乎总是多余的。 Ruby 中只有两个逻辑假值:nilfalse。除非变量可能是文字 false,否则这就足够了:

if (variable)
# ...
end

这比通常的 if (!variable.nil?)if (variable != nil) 偶尔出现的东西更可取。 Ruby 倾向于使用更简化的表达方式。

您想要与 nil 进行比较的一个原因是,如果您有一个可以是 truefalse 的三态变量或 nil 并且您需要区分最后两个状态。

关于ruby-on-rails - 检查 Rails 快捷方式中是否不为零且不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22970057/

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