使用用户模型保持距离属性

时间:2014-03-11 18:16:53

标签: ruby-on-rails ruby postgresql activerecord rails-activerecord

如果我有一个User模型,我有一个我不想保存到数据库的距离属性,但是将它用于SQL查询,它将计算距离作为保存由查询。

所以在我的模型中声明这样(数据库中没有距离列):

attr_accessor :distance

但是当我做的事情如下:

User.where('...').select('222 as distance, id')

示例输出将是:

#<User id: 12631>

那么为什么rails不会在我的模型中注入查询返回的distance?我该如何解决这个问题?

1 个答案:

答案 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 ....