我有has_many
关联
has_many :devices, through: :vehicles, foreign_key: :meid
我需要将last_device
实现为has_one
关系,以便将其与ransack gem一起使用,并且可以使用此类方法实现
def last_device
devices.last
end
我尝试了一些变种,但我还没有设法让它运转
has_one :last_device, class_name: 'Device'
答案 0 :(得分:0)
实际上我已经把它分成两部分来完成它
has_one :last_vehicle, -> { order('vehicles.created_at DESC') }, class_name: 'Vehicle'
has_one :last_device, through: :last_vehicle, source: :device, class_name: 'Device'
答案 1 :(得分:0)
不要认为按照你提议的方式做到这一点,'因为你没有正确的设置方法。
我唯一能想到的(如果你坚持使用hansack),就是在模型中添加last_device_id
列,然后添加如下关系:
has_one :last_device, class_name: Device
虽然在将新设备添加到用户的车辆或最后一个设备被删除时,您需要更新该列。