2013-08-21 5 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.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 is not null'), чтобы получить все сертификаты. Он возвращает ActiveRecord :: Relation, вы можете использовать его как массив. – Bigxiang

Смежные вопросы