任何人都知道 Rails 方法可以让我查找现有记录或创建新记录并执行后续代码块?
例子:
Model.where(parameters).first_or_create do |m|
# execute this regardless of whether record exists or not
end
类似地,方法
find_or_create_by
在任何一种情况下都不执行 block 。我可以使用
if-else
声明,但这会重复我的代码......
最佳答案
我从 a great screencast通过瑞安贝茨:
Model.where(parameters).first_or_create.tap do |m|
# execute this regardless of whether record exists or not
end
(其中
User#tap
选择用户)我认为这种方式看起来更干净一些,并且您不必像 Mischa 的回答那样定义另一个辅助方法。两者都工作正常。
关于ruby-on-rails-3.2 - 在 Rails 中,针对两种情况执行 block : first_or_create,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12255125/