检查rails中的链接关联是否存在

时间:2017-07-06 18:12:42

标签: ruby-on-rails database ruby-on-rails-4 activerecord

我有一个模型关联设置,其中每个User has_one Buyer和特定Users也可以注册为Sellerhas_one关联)。

另外,某些买方可以指定为Elitehas_one的另一个Buyer关系。

现在我的情况是,我想设置一个cron工作来检查不同buyers的活动,并排除所有sellerselite buyers

我的方法是:

def self.create_daily_user_notifications
  @users = User.where({ banned: false, admin: false })
  @users = @users.reject {|u| u.seller or u.buyer.elite }
end

在这种情况下的问题是,如果某个条件buyer没有关联的elite关系,则实际上会产生错误undefined method elite for buyer

我猜是因为在buyer不是elite的情况下,联接不存在。有没有办法可以添加这张支票?

1 个答案:

答案 0 :(得分:2)

那么,您可以使用try来消除错误并继续检查。

@users = @users.reject {|u| u.seller or u.buyer.try(:elite) }
相关问题