我疯狂地试图让它发挥作用。我想遍历一个名为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 !!
答案 0 :(得分:2)
您应该使用find_by_id
代替find
。
find_by_id
只返回nil
。
如果您使用find
,则需要处理异常。
你可以这样做:
@next_trigger = Trigger.find(n) rescue nil