Я пытаюсь следовать совету в Mongoid 3 - Check for uniqueness of composite key, чтобы иметь модель с уникальным ограничением на 2 поля.Mongoid Unique Constraint on Composite Key
Декларация идентификатор заключается в следующем:
field :_id, type: String, default: &method(:generate_id)
private
def generate_id
user.id.to_s + offering.id.to_s
end
Но если я это сделаю, то есть приступ гнева, когда я создаю экземпляр объекта с помощью нового, потому что он пытается создать идентификатор, прежде чем он имеет пользователя и предложение и его (правильно) не хочет использовать id из nil. Я могу передать пользователю и предлагать в качестве параметров конструктора, и все в порядке.
Мой вопрос в том, является ли это правильным способом? Он чувствует себя грязным, учитывая всю тупую дурацку, которую я должен сделать, чтобы получить уникальное ограничение. Код не очень-то раскрывает вообще. Есть ли способ лучше?
Это намного больше похоже на то, что я хочу, и код действительно отражает то, что я пытаюсь выполнить. Благодаря! –