需要在对象中寻找特定措辞的范围方法的正确措辞
Need correct wording for scope method seeking specific wording in the object
我想不出这个范围方法的正确措辞。任务是创建一个范围方法,指定请求(有注释)只显示注释中带有单词 "kids" 的请求。我似乎无法找到正确的措辞来使它起作用
我试过了scope :requests_with_kids_in_note, -> { where('note').includes(text: "kids")}
scope :requests_with_kids_in_note, -> { select('note').where('note').includes(text: "kids")}
错误消息没有帮助
您可以使用 Arel
来编写该查询。
假设你有一个 Request
有一个 has_many :notes
关联,你可以这样写范围:
class Request < ApplicationRecord
has_many :notes
scope :with_kids_in_note, -> {
joins(:notes).where(Note.arel_table[:content].matches('%kids%'))
}
end
class Note < ApplicationRecord
# In this model, i'm assuming that "content" is the column
# in which you have to find the word "kids".
belongs_to :request
end
您可以通过范围很容易地做到这一点,但您应该以不同的方式格式化 where 子句。另外我建议让它更通用:
scope :note_contains, -> (word) { where('note LIKE %?%', word) }
并像这样使用它:
Model.note_contains('kids')
我想不出这个范围方法的正确措辞。任务是创建一个范围方法,指定请求(有注释)只显示注释中带有单词 "kids" 的请求。我似乎无法找到正确的措辞来使它起作用
我试过了scope :requests_with_kids_in_note, -> { where('note').includes(text: "kids")}
scope :requests_with_kids_in_note, -> { select('note').where('note').includes(text: "kids")}
错误消息没有帮助
您可以使用 Arel
来编写该查询。
假设你有一个 Request
有一个 has_many :notes
关联,你可以这样写范围:
class Request < ApplicationRecord
has_many :notes
scope :with_kids_in_note, -> {
joins(:notes).where(Note.arel_table[:content].matches('%kids%'))
}
end
class Note < ApplicationRecord
# In this model, i'm assuming that "content" is the column
# in which you have to find the word "kids".
belongs_to :request
end
您可以通过范围很容易地做到这一点,但您应该以不同的方式格式化 where 子句。另外我建议让它更通用:
scope :note_contains, -> (word) { where('note LIKE %?%', word) }
并像这样使用它:
Model.note_contains('kids')