我不確定這個問題沒有得到回答,但我不確定要搜索什麼,所以如果我要求已經回答的問題,請指出正確的方向。沒有使用ID的活動記錄協會
我有2種型號:
STOCK_SYMBOL和weight_symbol
STOCK_SYMBOL中有symbol
這在weight_symbol模型
匹配commodity
我怎樣才能得到一個協會工作,所以當我做STOCK_SYMBOL。 weight_symbol,我會得到weight_symbol。
我知道如何在SQL中做到這一點,但如果它不是標準的id
到this_id
那麼我大部分都會丟失。
編輯:從STOCK_SYMBOL
class StockSymbol < ActiveRecord::Base
has_many :weight_symbols, primary_key: :symbol
def commodity
"LC" # This is just an example to simplify it, there is much more to this.
end
end
class WeightSymbol < ActiveRecord::Base
belongs_to :stock_symbol, foreign_key: :commodity
end
樣本對象:
StockSymbol.last
<#StockSymbol id: 729, symbol: "LCJ13C12500", created_at: "2013-03-15 21:50:49", updated_at: "2013-03-15 21:50:49">
樣本對象從weight_symbol:
WeightSymbol.first
<#WeightSymbol id:1, weight_group_id: 1, symbol: "LC", created_at: "2010-01-05 21:13:28", updated_at: "2010-01-05 21:13:28">
這一設置和運行StockSymbol.last.weight_symbols.to_sql
後,我得到:
"SELECT `weight_symbols`.* FROM `weight_symbols` WHERE `weight_symbols`.`stock_symbol_id` = 'LCJ13C12500'"
編輯2:
查詢,它應該做的事(我想):
SELECT * FROM `weight_symbols` WHERE `weight_symbols`.`symbol` = 'LC';
查詢得到我想要的信息。
SELECT * FROM `weight_symbols` a
JOIN `stock_symbols` b
ON a.symbol = b.commodity
WHERE b.symbol = 'LCJ13C12500';
新股票符號對象
<#StockSymbol id: 729, symbol: "LCJ13C12500", created_at: "2013-03-15 21:50:49", updated_at: "2013-03-15 21:50:49", commodity: "LC">
我想,和它沒有工作。我可能有什麼問題。我沒有考慮它,但商品是一種方法,而不是一個專欄。我希望仍然有辦法做到這一點。我添加了所有我認爲可能對問題有所幫助的東西。 –
似乎有幾個問題基於此,以及您的更新問題。我已經更新了我的答案。 –
我更新了數據庫並添加了商品作爲列(我不知道爲什麼我之前沒有這樣做,因爲它實際上是靜態信息,所以非常感謝)。我仍然得到相同的SQL輸出。我正在用SQL格式更新我想要的原始問題。我對此不夠了解,以便真正瞭解我做錯了什麼。我閱讀了您列出的網頁,但他們似乎沒有向我展示我正在嘗試做的事情的正確範例。 –