1
我試圖使用表之間的關係, 兩個表中的主鍵具有相同的名稱adm_id (我知道,我知道,但無法控制數據庫) 我在JRuby中使用沒有Rails的activerecord。activerecord without Rails:獲取相關記錄
當我得到相關記錄(電子郵件),我得到下面的錯誤。 可能somoene幫我嗎?
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>
pat:這兩個需求只是在那裏檢查是否至少存在一條記錄,並且它們按照我的指示工作。我是新來的這些軟件包,但我認爲他們沒有任何關係,我試圖通過顯示lid.emails 使用,當你使用沒有參數的時候你會在JRuby 1.7.4中得到以下錯誤:ArgumentError :調用'take'的參數個數錯誤(0代表1) – peter
如果你想從查詢中得到單個記錄,最好使用'first'而不是'take',然後嘗試調用生成的Adm實例的'emails': 'Adm.where(adm_id:3441029).first.emails' - 或者甚至更簡單,因爲您正在通過主鍵進行搜索:'Adm.find(3441029).emails' – pat
好的,那可行,謝謝 – peter