是否可以对涉及where调用的回调进行条件化?

时间:2015-11-26 01:31:38

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

在我的Membership型号上,我有以下回调:

after_create :setup_connection,

我希望只有在此方法返回true时才能运行:

  def connection_exists?(membership)
    Connection.where("membership_id = ? OR invited_membership_id = ?", membership.id, membership.id).count > 0 ? true : false
  end

似乎典型的:if and :unless期望列/符号或Proc。

不确定如何将上述内容转换为可行的过程。

如何修改此回调以便为我工作?

1 个答案:

答案 0 :(得分:2)

在您的会员模式中:

def connection_exists
  Connection.where("membership_id = ? OR invited_membership_id = ?", self.id, self.id).count > 0 ? true : false
end

并将其设为:

after_create :setup_connection, if: Proc.new { self.connection_exists }