【发布时间】:2015-08-30 14:41:27
【问题描述】:
我有一个 TopicRelation 类,它使用 source_topic_id 和 target_topic_id 在两个主题之间建立关系。这是模型:
class TopicRelation < ActiveRecord::Base
belongs_to :source_topic, class_name: 'Topic'
belongs_to :target_topic, class_name: 'Topic'
end
我正在尝试仅提取源主题的名称:
TopicRelation.joins(:source_topic, :target_topic)
.where('source_topic_id=?', topic.id)
.select('source_topics.name')
但是,这给了我以下错误:
TopicRelation Load (113.7ms) SELECT source_topics.name FROM `topic_relations` INNER JOIN `topics` ON `topics`.`id` = `topic_relations`.`source_topic_id` INNER JOIN `topics` `target_topics_topic_relations` ON `target_topics_topic_relations`.`id` = `topic_relations`.`target_topic_id` WHERE (source_topic_id=1) LIMIT 10
Mysql2::Error: Unknown column 'source_topics.name' in 'field list': SELECT source_topics.name FROM `topic_relations` INNER JOIN `topics` ON `topics`.`id` = `topic_relations`.`source_topic_id` INNER JOIN `topics` `target_topics_topic_relations` ON `target_topics_topic_relations`.`id` = `topic_relations`.`target_topic_id` WHERE (source_topic_id=1) LIMIT 10
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'source_topics.name' in 'field list': SELECT source_topics.name FROM `topic_relations` INNER JOIN `topics` ON `topics`.`id` = `topic_relations`.`source_topic_id` INNER JOIN `topics` `target_topics_topic_relations` ON `target_topics_topic_relations`.`id` = `topic_relations`.`target_topic_id` WHERE (source_topic_id=1) LIMIT 10
是否可以使用这种方法同时为source_topic 和target_topic 选择名称?
【问题讨论】:
标签: mysql sql ruby-on-rails activerecord