【问题标题】:Check chained association existence in rails检查rails中是否存在链式关联
【发布时间】:2017-12-10 21:20:49
【问题描述】:

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

还可以将一些买家指定为Elite,作为与Buyer 的另一个has_one 关系。

现在我有一种情况,我想设置一个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 的情况下不存在连接。有什么方法可以让我添加这个检查吗?

【问题讨论】:

  • 你的意思是你想继续u.buyer.elite检查而不是得到错误?
  • @Pavan 是的,我希望能够删除所有精英买家的用户,而不会让那些不是精英买家的用户出错

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2012-08-02
    相关资源
    最近更新 更多