У меня есть две модели: Number
и Range
ActiveRecord: найти по соответствующей стоимости объектов в пределах диапазона
# number :integer
class Number < ActiveRecord::Base
has_many :ranges
end
# first_id :integer
# last_id :integer
class Range < ActiveRecord::Base
belongs_to :first, class_name: 'Number'
belongs_to :last, class_name: 'Number'
end
У меня есть некоторые записи в моей базе данных:
=> [#Number: id: 1, number: 1]
=> [#Number: id: 2, number: 7]
=> [#Number: id: 3, number: 3]
=> [#Number: id: 4, number: 42]
=> [#Number: id: 5, number: 23]
=> [#Range: id: 1, first_id: 1, last_id: 2]
Сохраненная Range
связано с первым Number
1
и последние Number
7
, но его следует выбрать, если я попрошу Ranges
от => [#Number: id: 3, number: 3]
, до о.
Как я могу получить все Range
для Number
, которая не является first
или last
из Range
, но в пределах диапазона?
Я пробовал его с .joins(:first, :last).where(['numbers.number <= ? ....
без каких-либо успехов.
Спасибо. 'Range.where (' first_id <=? AND last_id> =? ', Number, number)' не будет возвращать какой-либо 'Range', потому что вместо' number' вместо 'number' используется' id' в 'where()'. –