2010-12-16 12 views
1

今、私はビデオのサムネイルファイルを扱っています。 私はポリモーフィックな関連使いたい:多型関連について

class Picture < ActiveRecord::Base 
    belongs_to :pictureable, :polymorphic => true 
end 


class Video < ActiveRecord::Base 
    belongs_to :videoable, :polymorphic => true 
    has_many :pictures, :as => :pictureable # I want to use has_one :picture, :as => :picturealbe, it make sense to let each video have a single picture as thumbnail but it doesn't work for me, video.picture return a nil 
end 

class Drummer < ActiveRecord::Base 
    has_many :videos,:as => :videoable 
    has_many :pictures, :as => :pictureable 
end 

をし、私は開発のログファイルに、このエラーを得たことは、サムネイル

<% @drummer.videos.each do |v|%> 
<li> 
<%= link_to video_path(v) do %> 
<%= image_tag(v.pictures.find(1).url) %> 
<h4><%= v.title %></h4> 
<h5><%= v.desc %></h5> 
<h6>event place</h6> 
<% end %> 
</li> 
<% end %> 

だと、すべてのビデオを表示するために、これを使用する:

ActionView::Template::Error (Couldn't find Picture with ID=1 [WHERE ("pictures".pictureable_id = 3 AND "pictures".pictureable_type = 'Video')]): 
    92: <% @drummer.videos.each do |v|%> 
    93: <li> 
    94: <%= link_to video_path(v) do %> 
    95: <%= image_tag(v.pictures.find(1).url) %> 
    96: <h4><%= v.title %></h4> 
    97: <h5><%= v.desc %></h5> 
    98: <h6>event place</h6> 
    app/views/drummers/show.html.erb:95:in `block (2 levels) in _app_views_drummers_show_html_erb___754323413_3886850_892596806' 
    app/views/drummers/show.html.erb:94:in `block in _app_views_drummers_show_html_erb___754323413_3886850_892596806' 
    app/views/drummers/show.html.erb:92:in 

`_app_views_drummers_show_html_erb___754323413_3886850_892596806'

私の解決策は全くエレガントではありませんが、私は良いアイデアを考え出すことができません 提案はありますか? おかげでみんな

答えて

1

あなたが明示的に与えられたビデオに関連付けられており、ID 1を持ち、時にはあなたは、エラー時になしで立ち往生している絵を見つけようとしますv.pictures.find(1)言うときあなたは

<%= image_tag(v.pictures.first.url) %> 

としてイメージタグをレンダリングすることができますそのようなレコードが存在する。

+0

うわー、それは意味があります。ありがとう – mko

1

私もレールの初心者だけど、私は...最近、同様の問題があったこれらの線に沿って何かが私のために働いていた:これは役立ちます

class Video < ActiveRecord::Base 
    belongs_to :videoable, :polymorphic => true 
    has_one :picture, :foreign_key => :pictureable_id 
end 

願っています!

+0

ありがとうございます。私はすぐにあなたのコードを試してみましょう:-) – mko

関連する問題