我有2個關聯的表,並希望應用基於父對象的+/-%5的tshirts(子表)長度屬性的過濾器學生的高度屬性Rails:基於父母的屬性計算
不幸的是,我收到父表名的未定義方法錯誤。
DB表:
Student
------
id
name
height
Tshirt
------
id
color
student_id
length
模型:
class Student < ApplicationRecord
has_many :tshirts
class Tshirt < ApplicationRecord
belongs_to :student
def self.suitablesize
joins(:student).where('length < ? AND length > ?', (1.05*self.student.height),(0.95*self.student.height))
end
控制器:
def index
@tshirts = Tshirt.all.suitablesize
end
錯誤消息:
undefined method `student' for #<Class:0xc88cdc0>
編輯: 我想得到適合所有者學生適用的所有t恤。因此,我不想找到一個學生作爲範圍方法的輸入參數。你有什麼想法我可以解決這個問題嗎?
你不需要使用'Tshirt.all.suitablesize'。 'Tshirt.suitablesize'就夠了,因爲它已經返回一個ActiveRecord作用域,因此'all'是一個NoOp。 – ulferts