Ruby on rails 用外键选择

Ruby on rails 用外键选择,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我正在尝试基于非标准外键对联接进行选择。SQL看起来不错,但Rails没有给出结果 我有这样一个消息模型: class Message < ActiveRecord::Base belongs_to :sender, :class_name => 'Person', :foreign_key => 'sender_id' belongs_to :recipient, :class_name => 'Person',

我正在尝试基于非标准外键对联接进行选择。SQL看起来不错,但Rails没有给出结果

我有这样一个消息模型:

class Message < ActiveRecord::Base
  belongs_to :sender, :class_name => 'Person',
                      :foreign_key => 'sender_id'
  belongs_to :recipient, :class_name => 'Person',
                         :foreign_key => 'recipient_id'
end
class Person < ActiveRecord::Base
  with_options :class_name => "Message", :dependent => :destroy,
               :order => 'created_at DESC' do |person|
    person.has_many :_sent_messages, :foreign_key => "sender_id",
                    :conditions => "sender_deleted_at IS NULL"
    person.has_many :_received_messages, :foreign_key => "recipient_id",
                    :conditions => "recipient_deleted_at IS NULL"
  end
end
Message.joins(:sender).select('messages.id, people.latitude')
我得到了以下表格:

"SELECT messages.id, people.latitude FROM \"messages\" INNER JOIN \"people\" ON \"people\".\"id\" = \"messages\".\"sender_id\""
此SQL在控制台中执行良好并返回结果

但是,我的Rails结果集如下所示

[#<Message id: 933>, #<Message id: 943>, #<Message id: 946>, ...]
没有返回纬度或经度值。如果我使用person\u id作为外键,同样的查询也可以正常工作。我在用Postgres

为什么会这样,我如何才能得到纬度和经度值


谢谢

您的选择不应该使用person.latitude和person.longitude吗?或者思考一个人是否属于人员表?是的,对不起,我修改了代码以使其更清晰。我会更新这个问题…你只是在看控制台的结果吗?您是否尝试过Message.joins:sender。选择“messages.id,people.latitude”。首先选择。latitude?它得到它,但它会再次访问数据库。