【发布时间】:2010-10-20 08:32:32
【问题描述】:
我有一个索引页面,我想显示所有用户的个人资料及其相关照片。我正在使用插件 Paperclip 来拍摄照片。在 Profiles 控制器中,我有实例变量 @profile,但它只向我显示配置文件表中的表,而不是照片表。
@profile = Profile.find(:all, :include => :photos,
:joins => "INNER JOIN photos ON photos.profile_id = profiles.id")
型号如下:
class Profile < ActiveRecord::Base
has_many :photos
end
class Photo < ActiveRecord::Base
belongs_to :profile
end
我希望能够在视图中显示的内容类似于:
- John 的个人资料(例如,姓名、年龄、性别) - John 的照片(例如,只显示一张照片)
- 此处显示玛丽的个人资料 - 此处显示玛丽的照片
- 此处显示 Bob 的个人资料 - 此处显示 Bob 的照片
【问题讨论】:
-
如果个人资料有很多照片,您如何确定要为特定个人资料显示哪张照片?这应该是一对一的关系吗? (在数据库中有几种不同的方法可以做到这一点 - 例如,个人资料可能有一个用于 profile_photo 的外键,或者照片中可能有一个布尔列,指示特定照片是否打算成为“主要”)
-
是的,我有一个名为 primary 的布尔列。如果设置为 1,则应显示照片。
标签: ruby-on-rails join activerecord