设置一对一

时间:2013-08-21 02:10:49

标签: ruby-on-rails activerecord ruby-on-rails-4 activemodel

我有一个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

1 个答案:

答案 0 :(得分:1)

我正在尝试回答你的问题。

我想你有一个app对象和一些证书对象。

首先,你得到一个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

我不确定答案是否可以解决您的问题。如果您有任何疑问,请在下面发表评论。