1

Railsでランダムなレコードをフェッチして、ホームページにレンダリングしようとしています。

コンテンツとタイトルの属性を持つ投稿モデルがあります。なんらかの理由でランダムな投稿(コンテンツとタイトル)を取得したいとしましょう。どうすればルビーでそれを実行できますか。前もって感謝します。

4

5 に答える 5

4

この宝石が便利だと思うかもしれません: Faker

何らかの意味を持つランダムな文字列を生成できます。

たとえば、名前:

Faker::Name.name => “Bob Hope”

または電子メール

Faker::Internet.email

このgemに加えて、モックモデルを非常に簡単に生成できるようにしたい場合は、gem Factory Girlをお勧めします

モデルのファクトリを作成できるため、ランダムな属性を持つモデルをすばやく生成できます。

于 2013-03-03T11:01:16.667 に答える
1

最初の回答が不明確な質問に回答して以来、別の回答を投稿しています。

@m_x が言ったようRANDOM() に、SQL に使用できます。

すべてのデータセットをロードしても構わない場合は、Ruby でも実行できます。

Post.all.sample 

これにより、すべての投稿から 1 つのランダムなレコードが選択されます。

于 2013-03-03T17:36:23.733 に答える
0

残念ながら、ランダム レコードを取得するためのデータベースに依存しない方法がないため、ActiveRecord はそれを実装していません。

postgresql の場合は、次を使用できます。

Post.order( 'RANDOM()' ).first

1 つのランダムな投稿を取得します。

さらに、私は通常、このためのスコープを作成します:

class Post < ActiveRecord::Base
  scope :random_order, ->{ order 'RANDOM()' }
end

したがって、RDBMS を変更する場合は、スコープを変更するだけで済みます。

于 2013-03-03T17:00:40.557 に答える
0

ポストコントローラーで、

def create
  @post = Post.new(params[:post])
  if you_want_some_random_title_and_content
    title_length = 80 #choose your own
    content_length = 140 #choose your own
    @post.title = (0...title_length).map{(65+rand(26)).chr}.join
    @post.content = (0...content_length).map{(65+rand(26)).chr}.join
  end

  if @post.save
    redirect_to @post
  else
    render 'new'
  end
end

Kent Fedric の方法を使用してランダムな文字列を生成する

于 2013-03-03T10:23:39.800 に答える