Rails:查找关联不存在的位置并声明变量

时间:2016-12-14 02:41:40

标签: mysql ruby-on-rails

我疯狂地试图让它发挥作用。我想遍历一个名为TriggersUser的连接表来查看用户没有触发记录的位置(他们只能有3个触发器)

if current_user.triggers.any?
    (1..2).each do |n|
     if !current_user.triggers.find(n)
      @next_trigger = Trigger.find(n)
     else
      @next_trigger = Trigger.find(3)
     end
   end
 end

我收到此错误:Couldn't find Trigger with 'id'=1 [WHERE "triggers_users"."user_id" = ?]

这是完美的,因为用户在连接表中没有与trigger_id 1相关联的记录。但是,我希望它现在声明一个变量@next_trigger = Trigger.find(1)

我错过了什么?

TY !!

1 个答案:

答案 0 :(得分:2)

您应该使用find_by_id代替find

当给定ID的记录不存在时,

find_by_id只返回nil

如果您使用find,则需要处理异常。 你可以这样做:

@next_trigger = Trigger.find(n) rescue nil