2013-08-21 19 views
0

我有一個Rails 4應用程序,它有一個Devise用戶。 Devise用戶可以創建多個應用程序,每個應用程序可以包含多個證書。在任何時候,tho和App只能有一個production_certificate和一個development_certificate。我相信我在這裏正確設置關聯。我現在遇到的麻煩是如何將應用程序設置爲使用應用程序擁有的許多證書中的一個作爲生產/開發證書。一對一設置

class App < ActiveRecord::Base 
    belongs_to :user 

    has_many :certificates 

    belongs_to :production_certificate, class_name: 'Certificate' 
    belongs_to :development_certificate, class_name: 'Certificate' 
end 

class Certificate < ActiveRecord::Base 
    belongs_to :app 
end 
+0

你想知道如何使用這些關聯來正確保存數據嗎? – Bigxiang

+0

是的,我不明白你想做什麼。如果您只是選擇了第一張證書作爲祝福證書,那就行得通了,但我懷疑這是您想要的答案。所以,告訴我們爲什麼這是一個不好的答案。 – Fred

+0

@Bigxiang是的我試圖找出如何正確保存數據。 – ny95

回答

1

我想回答你的問題。

我想你有一個應用程序對象和一些證書對象。

起初,你會得到一個App對象。

app = App.find(YOUR ID) 

app.certificates.each do |c| 
    # In the loop, you can set your logic 
    # that selects which certificate is production certificate 
    # or development certificate 

    if ..... 
    app.production_certificate = c 

    elsif ..... 

    app.development_certificate = c 
    end 

end 

app.save 

我不知道答案可以解決您的問題。如果您有任何問題,請在下面評論。

+0

謝謝,這解決了我的問題,並完美地工作。無論如何,我可以找出證書是否由證書模型中的程序使用應用程序? – ny95

+0

如果應用程序使用證書,則證書的user_id不能爲空。因此您可以使用Certificate.where('user_id不爲空')獲取所有使用的證書。它返回一個ActiveRecord :: Relation,你可以用它作爲一個數組。 – Bigxiang