Я пытаюсь согнуть рельсы вокруг устаревшей базы данных. Каждая из таблиц имеет столбец «источник данных», представляющий собой 3-х символьный код, из которого поступили данные. Таким образом, чтобы однозначно идентифицировать и связываться с другими таблицами, вам нужно иметь две части информации (например, номер счета и источник данных).
Отношение has_many, которое у меня есть ниже, работает нормально, если я не пытаюсь включить его в запрос.
# Model Association
has_many :transactions,
:primary_key => :account,
:foreign_key => :acnt,
:order => :ddate,
:conditions => ['datasource = ?', '#{self.datasource}']
# Controller code FAIL when I loop through results in view and call 'account.transactions'
@accounts = Account.includes(:transactions).where(:lname => 'Smith')
# However, this controller code works when I loop through the results in the view and call 'account.transactions'
@accounts = Account.where(:lname => 'Smith')
# View
<% @accounts.each do |a| %>
<% a.transactions.each do |t| %>
<%= t.description %>
<% end %>
<% end %>
Ошибка:
ActionView::Template::Error (undefined method `datasource' for #<Class:0x1025f25c8>):
Как правильно выполнить это в Rails 3?