【发布时间】:2022-12-11 11:28:58
【问题描述】:
用户.rb
has_many :users_positions
has_many :positions, through: :users_positions
//users table has position_id as a field, it represents the current position user is associated with
scope :under_25_value, -> { joins(:positions).where('(value * positions.available / 100) in (?)', 0..24) }
scope :under_50_value, -> { joins(:positions).where('(value * positions.available / 100) in (?)', 25..49) }
scope :over_50_value, -> { joins(:positions).where('(value * positions.available / 100) >= ?', 50) }
def current_positions
value * position.available / 100
end
在 Rails 控制台中,如果我尝试以下命令,它会返回 current_positions 为 75 的用户,但它应该返回 25 以下。
User.under_25_value
请帮我找到我要去哪里错了
样本数据
User id: 894, name: "Jack", value: 18, position_id: 3
Position id: 3, available: 100, name: 'Manager'
【问题讨论】:
-
value和positions.available字段包含什么? -
@Vishal value 是 users 表中的字段, positions 是另一个表, available 是表中的字段。 value 和 available 都是整数数据类型。 users 表有 position_id 作为字段,它表示用户关联的位置。我在问题部分添加了示例数据。请检查
-
您能否添加值为 75 且位于
under_25_value范围内的记录。我仍然对你所做的计算感到困惑
标签: ruby-on-rails activerecord scope ruby-on-rails-5 instance-methods