- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我什至不确定我是否有问题,但我只是不喜欢我的 text_fields 和 text_areas 在数据库中保存为 empty string
而不是 nil
.
我正在玩空对象模式,我刚刚意识到如果我创建一个配置文件但不填写位置字段然后调用 <%= @user.profile.location.upcase %>
然后它不会爆炸,因为 location 是一个字符串,即使它是空的。
这是 Rails 的惯例吗?如果是这样,那为什么呢?这有点奇怪,因为假设有一个 number_of_pets
配置文件上的 attr 然后我尝试调用类似
<% if user.profile.number_of_pets.odd? %>
<%= @user.profile.first_name %> has odd number of pets
<% end %>
然后它就崩溃了,因为我无法调用 nil.odd?
.
像往常一样形成,所以如果没有填充,它将被保存为空字符串
<%= form_for @profile, url: user_profile_path do |f| %>
<%= f.label :city %>
<%= f.text_field :location, class: 'form-control' %>
......
最佳答案
最简单的解决方法是使用此处的“strip_attributes”之类的 gem:https://github.com/rmm5t/strip_attributes
可以通过在您的模型中添加一个 before_save
回调来完成自定义解决方法,该回调采用任何空白值并将它们设置回 nil。
例如在您的模型中:
before_save :my_nil_maker_method_lol
[...]
def my_nil_maker_method_lol
if self.whatever_attribute.blank?
self.whatever_attribute=nil
end
end
更新:
防止空白字段被保存可以通过多种方式完成,例如上面描述的,甚至在它们到达数据库之前删除 Controller 中的空白参数。
在维护数据库完整性时,Rails 的方法是始终将此逻辑保留在您的模型中。它使维护变得更加容易,并减少了出现意外的空间,例如如果您要在其他地方修改传入参数。
至于它应该如何在模型中完成,实际上只是您作为开发人员期望获得的输入的问题。您可以添加一个如上所示的回调来维护您认为合适的数据库,或者您可以添加一个 validates_presence_of
验证,如果该字段留空,它将向用户返回一个错误。
如果您问是否应该完全避免将空字符串插入数据库,这实际上取决于您作为开发人员,因为在某些情况下您可能需要该信息,但在这种情况下听起来就好像您要限制空字符串一样。
关于ruby-on-rails - rails text_field/text_ara 空字符串与 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37209611/
我正在尝试用 Java 构建一个字符串,该字符串的长度最多为 3,最少为 1。 我正在根据整数数组的内容构建字符串,如果数组的内容为 -1,我想在字符串中输出一个空字符。否则字符串将包含整数的字符版本
我有一个类,其中有一个方法可以在字符串中包含 NUL 字符的情况下终止程序。具体表达是这样的: stringVar.indexOf('\u0000') < 0 这个字符串是通过 Scanner 从用户
我有一个 wchar_t 数组。我需要在数组中的特定位置添加一个 unicode 空字符。 wchar_t var1[100]; var1[79] = '\u0000'; 我尝试了上面的方法,但出现以
好吧,这听起来可能是重复的,但我已经尝试了所有可能性,例如 str.strip()、str.rstrip()、str.splitline (),还 if-else 检查像: if str is not
System.out.println("-----------------------------------------------------------"); System.out.pr
我有一个奇怪的问题。我从公司内部的许多不同应用程序接收数据,并将这些数据显示在网站上。根据发送数据的系统,数据本身可能在字符串中包含一些奇怪的字符。我的问题是我有一个用户可以搜索以允许其中包含此数据的
我遇到了 aSSL ,这似乎有几年历史了,想知道是否有人有其他“安全”AJAX 连接代码示例?显然,这不如使用 SSL 证书安全,但使用 null character SSL在那里进行攻击(最近针对
我有一个类似于以下内容的 pyspark 数据框: df = sql_context.createDataFrame([ Row(a=3, b=[4,5,6],c=[10,11,12], d='b
我有以下要执行的查询: MyModel.objects.annotate(current_name=Coalesce('nickname', 'name')).order_by('current_na
每当 rails 变量等于 nil(或者实际上每当我使用 rails 代码(参见第 3 个代码示例))时,我的 html 中就会得到一串空字符。 new.html.haml %h1.editable.
我是一名优秀的程序员,十分优秀!