2012-04-25 62 views
1

我是rails新手,不確定如何設置以下內容。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列,如果在各種邀請之間共享相同的圖片,會發生什麼情況?

I.e.每個邀請可以具有與其關聯的單個圖片,並且其他邀請可以具有與其相關聯的相同圖片。我不希望圖片「知道」邀請,但也許我必須創建一個多對多的關係?

謝謝!

回答

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 
+1

這樣的邀請,有一個可選的圖片(只是不設置'picture_id'場;)) – 2012-04-25 19:32:07

+0

哇,我沒有看到即將到來!謝謝! :) – Karan 2012-04-25 19:38:22

相關問題