Rails has_one 外键在所属模型上的关系?
Rails has_one relationship where foreign key is on owning model?
我有一个 Photo
和 Photoset
模型:
一个Photoset
应该有很多photos
和一个primary_photo
。
一张Photo
应该属于很多Photosets
,可以是很多照片集中的primary_photo
。
但是我对如何设置 primary_photo
关系感到困惑。我正在设想将 primary_photo_id
添加到 photosets
但我无法弄清楚如何定义 has_one
以便在拥有方(Photoset)上定义该列。
我尝试通过以下方式实现:
- 添加
photo_photosets
加入 table。
- 将
primary_photo_id
列添加到 photosets
。
我在我的模型中设置了关系:
class Photo < ActiveRecord::Base
has_and_belongs_to_many :photosets
validates_uniqueness_of :flickr_uid
end
class Photoset < ActiveRecord::Base
belongs_to :user
validates_uniqueness_of :flickr_uid
has_and_belongs_to_many :photos
has_one :primary_photo, class_name: 'Photo' # !???
end
class Photo < ActiveRecord::Base
has_and_belongs_to_many :photosets
validates_uniqueness_of :flickr_uid
end
class Photoset < ActiveRecord::Base
belongs_to :user
validates_uniqueness_of :flickr_uid
has_and_belongs_to_many :photos
belongs_to :primary_photo, class_name: 'Photo'
end
我有一个 Photo
和 Photoset
模型:
一个Photoset
应该有很多photos
和一个primary_photo
。
一张Photo
应该属于很多Photosets
,可以是很多照片集中的primary_photo
。
但是我对如何设置 primary_photo
关系感到困惑。我正在设想将 primary_photo_id
添加到 photosets
但我无法弄清楚如何定义 has_one
以便在拥有方(Photoset)上定义该列。
我尝试通过以下方式实现:
- 添加
photo_photosets
加入 table。 - 将
primary_photo_id
列添加到photosets
。
我在我的模型中设置了关系:
class Photo < ActiveRecord::Base
has_and_belongs_to_many :photosets
validates_uniqueness_of :flickr_uid
end
class Photoset < ActiveRecord::Base
belongs_to :user
validates_uniqueness_of :flickr_uid
has_and_belongs_to_many :photos
has_one :primary_photo, class_name: 'Photo' # !???
end
class Photo < ActiveRecord::Base
has_and_belongs_to_many :photosets
validates_uniqueness_of :flickr_uid
end
class Photoset < ActiveRecord::Base
belongs_to :user
validates_uniqueness_of :flickr_uid
has_and_belongs_to_many :photos
belongs_to :primary_photo, class_name: 'Photo'
end