Rails 3如何找出find_or_create触发了哪个动作

时间:2013-01-05 04:45:53

标签: ruby-on-rails ruby-on-rails-3 activerecord

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

find_or_create

where(attributes).first_or_create

this post所示。

但是我一直想知道

有没有办法确定触发了哪个动作? (因为我想在显示它时显示正确的通知)BTW。我正在使用Ruby 1.9.3

提前致谢。

3 个答案:

答案 0 :(得分:1)

if Model.find_by_attributes(attributes)
  flash[:notice] = "record found"
else
  Model.create(attributes)
  flash[:notice] = "record created"
end

答案 1 :(得分:1)

我个人认为不是使用find_or_create,而是单独使用查找和创建,这样我认为它更清洁和可扩展。

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

所以我会写这样的东西

HTH

答案 2 :(得分:0)

如果ruby为__method__

,请使用1.9.3+
if ['new','include'].include? __method__ then
  ...
else
  ...
end