私は、ユーザーがデフォルトのプロフィール写真とデフォルトの写真アルバムカバー写真を設定できるようにする機能を実装していました。ruby on rails findメソッドを私の見解でどのように使うのですか、それとも悪い習慣ですか?
を私は、データベース内の次のテーブルを持っている:今、これらの機能を完了
は、ユーザー(複数可)(、つのプロファイルを持っている多くのPhotoAlbumsを持っている)
プロファイル(S)は(所属ユーザーは)photo_id
フォトアルバム(S)は、(多くの写真を持って、ユーザーに属しているが)写真(複数可)は(PhotoAlに属しphoto_id
含ま含まbum)
ユーザーのデフォルト写真を表示するのは簡単です。 ユーザーのデフォルトのアルバム写真を表示するのに問題があります。
これは私がユーザーのデフォルトのプロフィール写真を表示する方法である:
がUserController:
default_profile_photo_id = current_user.profile.photo_id
@default_photo = Photo.find(default_profile_photo_id)
ユーザーがショーテンプレートを表示:photoalbumsのデフォルトの写真のために現在
<%= link_to image_tag(@default_photo.image, :width =>"200"), @user.username %>
私は内部の最初の写真を表示しますそのフォトアルバム:
<% for photo_album in @photoalbums %>
<%= link_to photo_album.album_title, photo_album %>
<%= link_to image_tag(photo_album.photos.first.image, :width =>"100"), photo_album %>
<%= link_to "Edit Album", edit_photo_album_path(photo_album) %>
<%= photo_album.photos.size %>
<% end %>
関連するコントローラのアクションは:
def index
@photoalbums = PhotoAlbum.find_all_by_user_id(current_user.id)
end
私は何をする必要があることは、ループが現在のでループしているフォトアルバムのphoto_idと一致するIDを持っている写真のテーブルから行を引き出し、forループ中にあります私のインデックスのテンプレートでは、私は一致する写真の行から画像を引き出して表示することができます。
私は経験豊富なプログラマから救いの手を必要と感じる。..
を無限のソリューションが、どれも仕事をしようとしました。
種類は、これを行う1つの効率的な方法は、あなたが最初の写真であることを保存に設定されたアルバムにdefault_photoを追加することです
'belongs_to:photo'をアルバムに追加することはできません(既に' photo_id'カラムがあるので)、 'photo_album.photo'で表示できますか? –
FYIでは、 'Photo.find(default_profile_photo_id)'の代わりに 'current_user.profile.photo'を実行できます。 'PhotoAlbum.find_all_by_user_id(current_user.id)'と同じですが、代わりに 'current_user.photo_albums'を使うことができます。 – mbillard