0

コントローラー インデックス アクションに次の 4 つの変数があり、さまざまなモデルからデータを取得しています。次のように結合しています。

@forum = Forum.where(:user_id => @users.collect(&:user_id)).all
@poll=Poll.where(:created_by => @users.collect(&:user_id)).all
@article = Article.where(:user_id => @users.collect(&:user_id)).all
@jobpost = Jobplacement.where(:user_id => @users.collect(&:user_id)).all
@post =  @article + @jobpost + @forum + @poll

ビューで @post をループしたかったので、書きました - @post.reverse.each do | ポスト| しかし問題は、この投稿には 4 つの異なるモデルとフォーラムからのデータが含まれていることです。記事、ジョブポストには :user_id 列が含まれていますが、ポーリングには user_id フィールドの列名として created_by が含まれています。次の行で

- if User.find(post.user_id).basic_info or User.find(post.created_by).basic_info
  - if User.find(post.user_id).basic_info.profilephoto?
    = image_tag User.find(post.user_id).basic_info.profilephoto.url(:thumb)

どうすれば次のような条件を与えることができますか

- if User.find(post.user_id).basic_info or User.find(post.created_by).basic_info

また

- if User.find(post.user_id or post.created_by).basic_info
4

1 に答える 1

0

これは厄介なことのようです。

しかし、このようなものはうまくいくはずです:

user_id = post.user_id || post.created_by
if User.find(user_id).basic_info

しかし、ビュー内のループからデータベース呼び出しを行うべきではありません。コントローラーとモデルですべてのデータ収集を行う方がクリーンです。

于 2012-05-16T08:04:28.070 に答える