没有Rails的activerecord:获取相关记录

时间:2013-07-01 15:56:33

标签: ruby oracle activerecord jruby

我正在尝试使用表之间的关系, 两个表中的主键具有相同的名称adm_id (我知道,我知道,但无法控制数据库) 我在JRuby中使用没有Rails的activerecord。

当我收到相关记录(电子邮件)时,我收到以下错误。 索明能帮助我吗?

require 'java'
require 'activerecord-jdbc-adapter'
require "C:/jruby-1.7.4/bin/ojdbc14.jar"
Java::OracleJdbcDriver::OracleDriver

ActiveRecord::Base.establish_connection(
   :adapter => 'jdbc',
   :driver => 'oracle.jdbc.driver.OracleDriver',
   :url => 'jdbc:oracle:thin:@xxxxxx:xxxx:xxx',
   :username=>'xxx',
   :password=>'xxx'
 )

class Adm < ActiveRecord::Base
  self.table_name = 'scheme1.db_all'
  self.primary_key = 'adm_id'
  has_many :emails
end

class Email < ActiveRecord::Base
  self.table_name = 'scheme2.db_email'
  self.primary_key = 'adm_id'
  belongs_to :adm, :foreign_key => 'adm_id'
end

lid = Adm.where(adm_id: 99999999).take(1) #ok
email = Email.where(adm_id: 99999999).take(1) #ok
p lid.emails

#error: NoMethodError: undefined method `emails' for #<Array:0x19bc716>

1 个答案:

答案 0 :(得分:2)

如果您只想要一条记录,请不要将任何参数传递给take

lid   = Adm.where(adm_id: 3441029).take
email = Email.where(adm_id: 3441029).take
p lid.emails

如果向take提供了任何参数,即使它是1,也会返回一个结果数组。