繁体   English   中英

Rails 4:find_or_initialize_by和条件默认值

Rails 4: find_or_initialize_by and conditional default values

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个建立像这样的关系的类:

def assign_vars
  template_variables.each do |master|
    @document.template_variables.find_or_initialize_by(
      name: master.name, tag: master.tag, text: master.default_value)
    end
  end
end

这样就可以找到它是否已经存在,或者如果没有就可以构建。 我的问题是text: master.default_value 我想仅在建立新关系时设置该值,而不是对于使用find_or_initialize_by找到的关系进行设置。 类似于text: text || master.default_value text: text || master.default_value 我怎样才能在那个循环中写出来呢?

1 个回复

如果您研究find_or_initialize_by的实现,

def find_or_initialize_by(attributes, &block)
  find_by(attributes) || new(attributes, &block)
end

您将看到它期望attributes以及block 属性仅用于查找记录。 因此,您可以在新对象实例化时传递一个block以初始化默认属性。

因此,要仅在未找到记录的情况下设置默认text值,您可以尝试以下操作:

def assign_vars
  template_variables.each do |master|
    @document.template_variables.find_or_initialize_by(
      name: master.name, tag: master.tag) do |t| 
        t.text = master.default_value
      end
    end
  end
end
1 .find_or_initialize_by 的 Rails 验证错误

在我的 rails 应用程序中,我有一个名为PushToken的类: 我的控制器看起来像这样: 从我的角度来看,这应该创建一个新的PushToken或更新现有的token属性。 现在在生产中,我在update!时收到此错误update! 线: 我不明白这是怎么发生的。 如果user和t ...

3 FactoryGirl 中的 find_or_initialize_by

我想知道 FactoryGirl 中是否有find_or_initialize_by的等价物来解决以下问题: 目标是该模型使用具有相同国家/地区的两个表。 我不想使用国家/地区的序列(正如我在电子邮件中发现的那样)。 Country 有一个唯一性约束,但我的主要问题是当我调用一次 Factor ...

4 find_or_initialize_by和嵌套属性

所以只是一个简短的描述。 在“ Users/Show ”中,我有一个Clubs表单,该表单接受CurrentClubs嵌套属性。 我有一个俱乐部名称的文本字段。 如果输入已经存在的名称,则CurrentClubs的嵌套属性将使用已创建的俱乐部的ID来创建一条记录。 如果俱乐部不存在,它将 ...

5 在Rails 3.2中使用find_or_initialize_by时如何尊重RESTful方法?

我的项目中有一个资源,可以从用户那里收集一些信息。 基本上,这是他们在访问网站的其他区域之前填写的表格。 然后,它会设置一个cookie一周,但是如果他们回来,它将查找他们先前的条目并保持他们的偏好(只要电子邮件地址匹配,它们就会更新任何详细信息)。 目前,我有一个Applicants ...

6 Rails中的默认值-活动记录after_initialize

有谁知道为什么在Rails 4.x中|| =运算符似乎不能与默认的Strings一起正常工作。 失败: 错误为: 作品: 为什么要使用默认字符串我需要一个方法,但是端口(整数)却不需要? 来源: 如何在Rails中设置默认值? ...

8 Rails 4,RSpec,MySQL2默认值错误

我跑rspec的测试时,我得到一个错误非常相似的一个在这个岗位 ,但笔者的解决方案不是为我工作。 错误: “非法链接”工厂将与其他两个工厂一起调用目标工厂,但是target_id是唯一一个引发错误的工厂: 我真正不明白的是,删除对目标工厂的调用并改为使用“ target_id ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM