-3
@posts = Post.all

Post.all は、現在データベースにあるすべての投稿を、@posts というインスタンス変数に保存する Post レコードの配列として返します。ユーザーの特定のデータだけを取得したいのですが、どうすればいいですか?

4

3 に答える 3

0

結果をフィルタリングする場合は、「where」メソッドを使用できます。

たとえば、ユーザー名で投稿をフィルタリングするには、次のことを試してください。

@posts = Posts.where(:username => "jondoe")

'find'メソッドで:conditionsシンボルを使用して、この場合はSQLを渡すこともできます。

たとえば、ユーザー名と公開フラグでフィルタリングするには、次のことを試してください。

@posts = Posts.all(:conditions => "username='johndoe' AND public=1")
于 2012-08-17T11:36:02.537 に答える
0

@posts = specific_user.posts.all

投稿モデルがユーザーモデルに属していること、およびユーザーモデルが多くの投稿を持っていることを確認する必要があります

于 2012-08-17T10:51:18.257 に答える
0

まず、移行を生成する必要があります。

rails g migration add_user_id_to_posts user_id:integer

次に、 を実行rake db:migrateして、postsデータベース テーブルにuser_id列が含まれるようにします。

ここで、関連付けを反映するように変更user.rbしてモデル化する必要がありますpost.rb

# app/models/post.rb
class Post < ActiveRecord::Base
  ...
  belongs_to :user
  ...
end

# app/models/user.rb
class User < ActiveRecord::Base
  ...
  has_many :posts
  ...
end

この後、Rails サーバーを再起動します。これで、このようなユーザーに固有の投稿にアクセスできるようになります

# Let fetch User with ID 1
user = User.find(1)
# Now, we can fetch posts related to this user like
@posts = user.posts
# Or like this
@posts = Post.where(:user_id => 1).all

簡単にフォローできることを願っています。Rails ActiveRecord アソシエーションについて学びます。

于 2012-08-17T10:59:33.667 に答える