1

我是 Rails 新手,不知道如何设置后续操作。

我有用户、邀请和图片模型。每个用户我邀请其他用户查看特定图片。用户向其他用户发送邀请;邀请可能会链接到特定图片,也可能根本不链接到某个图片。

我的问题是我不确定如何关联邀请和图片之间的可选关系。

我有:

class Invitation < ActiveRecord::Base
  has_one :picture
end

class Picture < ActiveRecord::Base
  belongs_to :invitation
end

但是,当我尝试invitation.picture 时,我收到以下错误:

Failure/Error: @user.getsInvited invitation
     ActiveRecord::StatementInvalid:
       SQLite3::SQLException: no such column: picture.invitation_id: SELECT  "picture".* FROM "picture"  WHERE "picture"."invitation_id" = 1 LIMIT 1

可能我需要将列邀请添加到图片模型,但是,这是否必要 - 发送图片在邀请中可能是可选的。另外,如果我在图片中确实有一个invitation_id 列,如果在不同的邀请之间共享同一张图片会发生什么?

即,每个邀请可以具有与其相关联的单个图片,并且其他邀请可以具有与其相关联的相同图片。我不希望图片“知道”邀请,但也许我必须通过创建多对多关系来实现?

谢谢!

4

1 回答 1

3

邀请应该知道它所附的内容:

class Invitation < ActiveRecord::Base
  belongs_to :picture # means invitation model has a picture_id column
end

class Picture < ActiveRecord::Base
  has_many :invitations
end
于 2012-04-25T19:29:14.987 回答