我是Rails的新手,想知道以下内容:
有没有办法进一步简化这一过程?
conda env create -f 'path to file'\NW_BI.yml
我当时在考虑使用三元表达式,但我想知道如何在不重复代码的情况下编写它,或者这是否是正确的方法。
animal = Animal.find_by(name:name,type:type)
if !animal
animal = Animal.create(name:name,type:type)
我是Rails的新手,想知道以下内容:
有没有办法进一步简化这一过程?
conda env create -f 'path to file'\NW_BI.yml
我当时在考虑使用三元表达式,但我想知道如何在不重复代码的情况下编写它,或者这是否是正确的方法。
animal = Animal.find_by(name:name,type:type)
if !animal
animal = Animal.create(name:name,type:type)
animal = Animal.find_or_create_by(name: name,type: type)
,
在您的特定情况下,answer of Mark是更好的答案。但是,我想为您提供目前的解决方案。
Ruby允许使用内联修饰符-if /除非声明。看起来像这样:
animal = Animal.find_by(name: name,type: type)
animal = Animal.create(name: name,type: type) unless animal
您还可以在此处使用||=
运算符(我偏爱它)。仅当变量当前具有伪造的值(nil
或false
)时,此运算符才将变量具有的权利分配给变量。
animal = Animal.find_by(name: name,type: type)
animal ||= Animal.create(name: name,type: type)
# or if you prefer the longer one-liner
animal = Animal.find_by(name: name,type: type) || Animal.create(name: name,type: type)
,
又一个变种:
animal = Animal.find_by(name:name,type:type) || Animal.create(name:name,type:type)