問候 我有3個數據庫表:使用:聯接在Ruby on Rails的3個
類型 ID 名
來源 ID 名 TYPE_ID
操作 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
在操作#索引器我有獲取數據的代碼(由腳手架生成)
@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 *
我試圖做的:
-replace operation.source_id到operation.sources.name#不起作用
-tried使用:連接,並不能得到源表中的字段
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>
我該如何正確使用:加入獲取更多字段? 或者還有另一種方法來獲取組合表數據。
爲什麼在操作/ show.html.erb我可以使用<%= @ operation.source.name%>並順利拿到source.name,但在*操作/指數。 html.er * b不能
這不起作用。 控制檯: irb(main):011:0 * Operation.includes(:source).first =>#<操作ID:2088,source_id:1,summ:10.0,comment:「」,created_at:「2011- 01-01 07:39:45「,updated_at:nil 瀏覽器: 未定義的方法`name'爲零:NilClass – ck3g 2011-01-27 06:22:00
在控制檯中做了如下操作:`Operation.includes(:source).first .source.name`?由於你在nil上得到了未定義的方法,這可能表明你有一些沒有鏈接到任何源的操作對象。如果是這種情況,那是故意的,你可能想使用`<%= operation.source? operation.source.name:「No Source」%>`。 – 2011-01-27 06:33:22