1

我有两个模型用户和照片。

现在,用户可以拥有许多照片。我正在寻找最好的 rails/database 模式来表示他们有一张个人资料图片。这是他们的其中一张照片。

用户模型

class User < ActiveRecord::Base
  attr_accessible :emailAddress, :firstName, :lastName, :middleName, :phoneNumber
  has_many :photos
end

照片模型

class Photo < ActiveRecord::Base
  belongs_to :client
  attr_accessible :image, :client_id
  has_attached_file :image
end

我应该向 User 添加一个指向现有 photoId 的 :profilePicture 属性,还是应该添加一个名为 ProfilePicture 的新模型,该模型具有 belongs_to :client 和 has_one :photo?

任何可以帮助我找出最佳设置方法的建议或链接都​​会有所帮助,谢谢。

4

1 回答 1

2

我做了类似的东西,我将 profilePicture 称为头像。用户模型必须在表中有一个 avatar_id 字段,该字段是用作用户头像的图片的 photo_id。请注意,照片中的 avatar_owner 只会在作为头像照片的照片实例中分配。

用户模型

class User < ActiveRecord::Base
  attr_accessible :emailAddress, :firstName, :lastName, :middleName, :phoneNumber, :avatar_id
  has_many :photos
  belongs_to :avatar, :class_name => "Photo", :foreign_key => "avatar_id"
end

照片模型

class Photo < ActiveRecord::Base
  belongs_to :client
  attr_accessible :image, :client_id
  has_attached_file :image
  has_one  :avatar_owner, :class_name => "User", :foreign_key => "avatar_id"

结尾

于 2013-04-03T04:43:50.010 回答