has_many和has_many通过where子句

时间:2014-12-27 22:16:09

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

我有一个用户表,用户可以成为朋友'彼此。以下关系位于user.rb并且正常运行:

has_many :friendships
has_many :friends, through: :friendships

当我运行User.first.friendshipsUser.first.friends时,一切正常。

这是我的问题......我在名为friendships的{​​{1}}表上添加了一列。我只想要accepted_on并非零的友谊。我使用以下代码来做到这一点:

accepted_on

现在如果我运行has_many :friendships, -> (object) { where.not(accepted_on: nil) } has_many :friends, through: :friendships ,一切都按计划运行。如果我运行User.first.friendships,我会收到以下错误:User.first.friends

这可能吗?

1 个答案:

答案 0 :(得分:1)

您未在关联中使用object。那么为什么不删除呢?

变化

has_many :friendships, -> (object) { where.not(accepted_on: nil) }

has_many :friendships,-> { where.not(accepted_on: nil) }