2013-04-22 42 views
0

我有兩個模型LinkFeed與許多關係(有很多:通過LinkFeed連接模型)。 每個鏈接應該屬於一個或多個Feed。所以,我想允許使用(因爲有相應的進料記錄)創建鏈接:如何驗證時沒有相應的記錄(多對多關係)

@feed = Feed.create(name: "Test Feed") 
@feed.links.create!(url: "http://google.com") 

而且無法創建簡單的Link.create!(url: "http://google.com")鏈接,因爲它不具備相應的進料記錄。我怎樣才能做到這一點?

編輯: 我加入這個驗證:

validate do 
    errors.add(:base, "Must have at least one feed") unless feeds.size > 0 
end 

但現在這兩個例子中失敗,此錯誤:/

回答

0

嘗試添加must not be null條件的外鍵feed_id

class Link 

    validates :feed_id, :presence => true 
    ... 
end 

這樣可以保持創建的記錄與feed無關聯而失敗。

編輯:

在這裏,有關驗證兩個答案在許多一對多relashionships。
Validate uniqueness of many to many association in Rails
Correct implementation of many-to-many in Ruby on Rails?

+0

那麼我需要在Link模型中使用feed_id嗎? – 2013-04-22 17:31:32

+0

那麼,鏈接與飼料有關,對吧?所以我認爲Link應該對Feed提供參考。 – MurifoX 2013-04-22 17:34:28

+0

是的,但它可能與1個或更多的飼料有關:/ – 2013-04-22 17:37:16

0

你需要validates_presence_of的組合:在您的Link類FEED_ID和validates_associatedvalidates_associated確保Feed也是一個有效的對象。

相關問題