Поздравления
У меня есть таблицы 3 дБ:
Типы
Я бы
Имя
Источники
Я бы
название
type_id
Операция
Я бы
source_id
комментарий
...
и модели для каждого:
class Type < ActiveRecord::Base
has_many :sources, :dependent => :destroy
end
class Source < ActiveRecord::Base
belongs_to :type
has_many :operations, :dependent => :destroy
end
class Operation < ActiveRecord::Base
belongs_to :source
default_scope :order => 'created_at DESC'
end
В Operation # index controller у меня есть код для получения данных (сгенерированных скаффолдингами)
@operations = Operation.all
И часть представления operations / index.html.erb , также сгенерированная скаффолдингом
<% @operations.each do |operation| %>
<tr>
<td><%= operation.source_id %></td>
<td><%= operation.comment %></td>
</tr>
<% end %>
Теперь я хочу использовать source.name вместо * operation.source_id *
Я пытался сделать:
-заменить operation.source_id на operation.sources.name # не работает
- попытался использовать: присоединяется и не может получить поля таблицы источников
irb(main):057:0> Operation.first( :joins => :source )
=> #<Operation id: 2088, source_id: 1, summ: 10.0, comment: "", created_at: "2011-01-01 07:39:45", updated_at: nil>
или
irb(main):063:0> Operation.first( :joins => 'INNER JOIN sources ON operations.source_id = sources.id' )
=> #<Operation id: 2088, source_id: 1, summ: 10.0, comment: "", created_at: "2011-01-01 07:39:45", updated_at: nil>
Как правильно использовать : объединения для получения дополнительного поля?
Или есть другой подход для получения данных комбинированных таблиц.
И почему в operations / show.html.erb я могу использовать <% = @ operation.source.name%> и успешно получить source.name , но в * operations / index.html.er * b нельзя