Я не уверен, что на это не было ответа, но я не уверен, что искать, поэтому, пожалуйста, укажите мне в правильном направлении, если я спрашиваю то, на что уже ответил.Ассоциация активных записей без использования id
У меня есть 2 модели:
stock_symbol и weight_symbol
stock_symbol имеет symbol
в нем, который соответствует commodity
в модели weight_symbol
Как я могу получить ассоциацию, чтобы работать так, когда я stock_symbol. weight_symbol, я бы получил weight_symbol обратно.
Я знаю, как это сделать в SQL, но если его не стандарт id
до this_id
, то я в основном потерян.
редактировать:
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
Пример объекта из stock_symbol:
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';
Новый Stock Symbol объект
<#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. Я недостаточно понимаю об этом, чтобы действительно получить то, что я делаю неправильно. Я прочитал страницы, которые вы указали, но они, похоже, не показывали мне правильный пример того, что я пытаюсь сделать. –