1

使用 Activerecord(在 postgresql 数据库上)该程序应该在表“cars”和“car_parts”之间进行简单的内部连接。两个表都存在于数据库中,都填充了数据,并且键由 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/myname/.rvm/gems/ruby-1.9.3-p194@global/gems/activerecord-3.2.8/lib/active_record/inheritance.rb:111:在 `compute_type' 中:未初始化的常量 Car::CarPart (NameError)"

4

1 回答 1

3

您正在混合命名约定。:car_parts 指的是一个名为 CarPart 的类,而您将其称为 Car_Part。尝试将其重命名为 CarPart。(并接受下一个问题!:-))

Active Record 认为单词的驼峰式部分应该翻译成一个下划线。

于 2012-11-03T13:44:55.857 回答