0

我刚刚遇到了我必须做的事情

find_or_create

或者

where(attributes).first_or_create

正如这篇文章所暗示的那样。

但有件事我一直在想

有没有办法确定触发了哪个动作?(因为我想在创建时显示适当的通知)顺便说一句。我正在使用 Ruby 1.9.3

提前致谢。

4

3 回答 3

1
if Model.find_by_attributes(attributes)
  flash[:notice] = "record found"
else
  Model.create(attributes)
  flash[:notice] = "record created"
end
于 2013-01-05T04:57:37.503 回答
1

我个人的信念是不要使用find_or_create,而是分别使用 find 和 create,这样我认为它更清洁和可扩展。

例如,如果您想在创建记录后做更多的事情。而且我坚信一种方法应该做一件事的概念:),

所以我会写这样的东西

高温高压

于 2013-01-05T05:09:55.310 回答
0

__method__如果 ruby​​ 是,则使用1.9.3+

if ['new','include'].include? __method__ then
  ...
else
  ...
end
于 2013-01-05T04:54:30.510 回答