In my model I would like to create a scope that takes advantage of a method that is also in my model.

I have the following model method:

  def is_paired
    ! pairing_id.nil?
  end

I would like to make a scope that looks something like this

  scope :paired, where(:is_paired => true)

But when I do I get an error:

SQLite3::SQLException: no such column: participants.is_paired: SELECT "participants".* F...

How can I create a scope that takes advantage of a method in my model???

有帮助吗?

解决方案

You cannot. Basically methods used in scopes like where, order ect. are "translated" to sql queries. Rails doesn't know how to translate custom methods to sql queries. Anyway you can use the following approach: scope :paired, where('pairing_id IS NOT NULL') For more details you can check: Rails where condition using NOT NULL

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top