使用Activerecord(在postgresql数据库上),这个程序应该在表“cars”和“car_parts”之间进行简单的内连接。这两个表都存在于db中,填充了数据,并且键由activerecord约定命名(即,两个表中的主键都命名为“id”;链接到“cars”的“car_parts”中的外键名为“car_id” )。我在Activerecord中使用“include”和“join”尝试了两种方法 - 不幸的是,两种方法都失败了以下消息。任何帮助表示感谢,谢谢!我的节目:
require 'active_record'
ActiveRecord::Base.establish_connection(
# details left out
)
class Car < ActiveRecord::Base
has_many :car_parts
end
class Car_Part < ActiveRecord::Base
belongs_to :car
end
results2 = Car.joins(:car_parts)
results2.each{|row| puts row.id}
results3 = Car.find :all, :include => [:car_parts]
results3.each{|row| puts row.id}
对于results2和results3,我收到错误消息:“/ home / mameame / .rvm / gems / ruby-1.9.3-p194 @ global / gems / activerecord-3.2.8 / lib / active_record / intrher.rb :111:在`compute_type'中:未初始化的常量Car :: CarPart(NameError)“
答案 0 :(得分:3)
您正在混合命名约定。 :car_parts指的是一个名为CarPart的类,而您将其称为Car_Part。尝试将其重命名为CarPart。 (并接受下一个问题!:-))
活动记录认为单词的驼峰部分应该转换为一个下划线。