You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails的has_many关联中如何引用非常规列名user_of_booking_id?

实现方案

无需修改数据库即可实现需求,Rails的has_many关联支持显式指定关联的主键来源,直接绑定你通过attr_accessor定义的user_of_booking_id属性即可。

代码修改示例

调整你的Reservation类代码如下:

class Reservation < ActiveRecord::Base
  belongs_to  :member
  has_one     :schedule, as: :schedulable, dependent: :destroy

  attr_accessor :user_of_booking_id
  # 新增has_many关联,以下示例假设关联目标为User模型,可替换为你实际对应的模型
  has_many :booking_users, class_name: 'User', primary_key: 'user_of_booking_id', foreign_key: 'id'
end

参数说明

  • class_name:填写你要关联的目标模型的类名,若关联的不是User模型自行替换即可
  • primary_key:指定用当前Reservation类的user_of_booking_id作为关联匹配的主键,Rails会直接读取该属性的值,不需要该属性对应数据库字段
  • foreign_key:填写目标模型上用于匹配的字段名,示例中目标模型用主键id匹配,所以填id,可根据实际业务调整

注意事项

  • 由于user_of_booking_id是内存级属性,仅当你给该属性赋值后,关联才能正常返回结果:比如表单提交赋值完成后、或者手动执行reservation.user_of_booking_id = 目标用户ID后,调用reservation.booking_users即可拿到对应关联数据
  • 若未给user_of_booking_id赋值,关联会默认返回空集合

内容的提问来源于stack exchange,提问作者Caio Felipe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:06:08