1

Ruby on Rails アプリのスキーマは以下のとおりです。私は現在、自分のホームページを埋めていて、ランダムな既存のユーザーからランダムに写真を選び、ホームページに掲載したいと考えています。

ホームコントローラーでいろいろ試してみたのですが、うまくいかないようです...

class HomeController < ApplicationController

  def index
    @featured = User.find(:all, :limit => 4, :order => 'RANDOM()')
    @users = User.find(:all)
    user_count = User.count()
    offset = rand(0..(user_count-1))
    @my_user = User.find(:all, :limit => 1, :offset => offset )
  end
end

次のことを試しましたが、成功しませんでした:

@photo = User.find(:order => 'RANDOM()').photo

@user = User.find(:all, :limit => 1, :order => 'RANDOM()')
@photo = Photo.find(@user)

次のようなエラーが表示されます: ID=6 の写真が見つかりませんでした

ゼロの場所/存在しない写真を指さずに、どうすればこれを行うことができますか...?

ActiveRecord::Schema.define(:version => 20130513143229) do

  create_table "photos", :force => true do |t|
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
    t.string   "image"
    t.integer  "user_id"
  end

  create_table "roles", :force => true do |t|
    t.string   "name"
    t.integer  "resource_id"
    t.string   "resource_type"
    t.datetime "created_at",    :null => false
    t.datetime "updated_at",    :null => false
  end

  create_table "users", :force => true do |t|
    t.string   "email",                  :default => "", :null => false
    t.string   "encrypted_password",     :default => "", :null => false
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          :default => 0
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip"
    t.string   "last_sign_in_ip"
    t.datetime "created_at",                             :null => false
    t.datetime "updated_at",                             :null => false
    t.string   "name"
    t.string   "avatar"
    t.string   "image"
  end
4

2 に答える 2