Ruby on rails 在我看来,如何使用RubyonRails查找方法,或者这是一种糟糕的做法?

Ruby on rails 在我看来,如何使用RubyonRails查找方法,或者这是一种糟糕的做法?,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,rubygems,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,Rubygems,所以我实现了一个功能,允许用户设置默认的个人资料照片和默认的相册封面照片 现在已完成这些功能: 我的数据库中有以下表格: 用户(有一个个人资料,有多个相册) 个人资料(属于用户)包含照片id 相册(属于用户,有许多照片)包含照片id 照片(属于相册) 显示用户的默认照片是直接的。 我现在无法显示用户的默认相册照片 这是我显示用户默认配置文件照片的方式: 用户控制器: default_profile_photo_id = current_user.profile.photo_id @defaul

所以我实现了一个功能,允许用户设置默认的个人资料照片和默认的相册封面照片

现在已完成这些功能:

我的数据库中有以下表格:
用户(有一个个人资料,有多个相册)
个人资料(属于用户)包含照片id
相册(属于用户,有许多照片)包含照片id
照片(属于相册)

显示用户的默认照片是直接的。 我现在无法显示用户的默认相册照片

这是我显示用户默认配置文件照片的方式:

用户控制器:

default_profile_photo_id = current_user.profile.photo_id
 @default_photo = Photo.find(default_profile_photo_id) 
用户查看显示模板:

<%= link_to image_tag(@default_photo.image, :width =>"200"), @user.username %> 
我需要做的是在for循环期间,从photos表中拖出一行,该行的id与循环当前正在循环的相册的photo_id相匹配,以便在我的索引模板上,我可以从匹配的photo行中拖出图像并显示它

我试过无数种解决办法,但都不管用

我觉得我需要一个有经验的程序员的帮助


亲切问候

一种有效的方法是将默认照片添加到相册中,并在保存时将其设置为第一张照片

class PhotoAlbum
  belongs_to :user
  has_many :photos
  belongs_to :default_photo

  before_save :set_default_photo

  protected
    def set_default_photo
      self.default_photo = self.photos.first
    end
end
然后在控制器中,您可以在查询中只包含默认照片

def index
  @photo_albums = current_user.photo_albums.include(:default_photo)
end

这样,在您的视图中,当您调用
photo\u album.default\u photo
时,它不会再次命中数据库,因为默认照片已经加载。

一种有效的方法是将默认照片添加到相册中,并在保存时将其设置为第一张照片

class PhotoAlbum
  belongs_to :user
  has_many :photos
  belongs_to :default_photo

  before_save :set_default_photo

  protected
    def set_default_photo
      self.default_photo = self.photos.first
    end
end
然后在控制器中,您可以在查询中只包含默认照片

def index
  @photo_albums = current_user.photo_albums.include(:default_photo)
end
这样,在您的视图中,当您调用
photo\u album.default\u photo
时,它不会再次访问数据库,因为默认照片已加载。

PhotoAlbum型号:

belongs_to :photo
视图:

受Frederick Cheung评论启发的非常简单的修复。

相册模型:

belongs_to :photo
视图:


受Frederick Cheung评论启发的非常非常简单的修复方法。

你不能将
属于:photo
添加到相册中(因为它已经有
photo\u id
列)并用
photo\u相册.photo
供参考,而不是
photo.find(默认配置文件\u photo\u id)
,您可以执行
当前用户.profile.photo
。与
相册相同。按用户id(当前用户id)
查找所有用户,您可以使用
当前用户。相册
。您不能只将
所属:photo
添加到相册中(因为它已经有
photo\u id
列),并将其与
photo\u相册.photo
一起显示,而不是
photo.find>?供参考(默认的\u profile\u photo\u id)
,您可以执行
当前用户.profile.photo
。与
相册相同。按用户id(当前用户.id)
查找所有内容,您可以改为使用
当前用户.photo\u相册。