如果我有一个User模型,我有一个我不想保存到数据库的距离属性,但是将它用于SQL查询,它将计算距离作为保存由查询。
所以在我的模型中声明这样(数据库中没有距离列):
attr_accessor :distance
但是当我做的事情如下:
User.where('...').select('222 as distance, id')
示例输出将是:
#<User id: 12631>
那么为什么rails不会在我的模型中注入查询返回的distance
?我该如何解决这个问题?
答案 0 :(得分:1)
attr_accessor
为实例变量@distance
设置getter和setter,而不是活动记录属性。
如果删除attr_accessor,您可以像访问任何其他属性一样访问所选列。
User.select('222 as distance, id').each { |u| puts "#{u.id}, #{u.distance}" }
// 1, 222
// 2, 222 ....