Ваша модель выглядит не очень хорошо, вы действительно хотите сохранить user_id в строковом поле?
Я предлагаю вам сменить модель на следующую:
class Entry
include Mongoid::Document
belongs_to :creator, :class_name => 'User', :inverse_of => :entries
# field definitions
end
class User
include Mongoid::Document
has_many :entries, :inverse_of => :creator
end
После того, как вы смените модели, вы можете продолжать использовать то, что вы есть сейчас или альтернативно:
@entry = current_user.entries.build(params[:entry])
Обновление:
Метод инициализации записи не сильно отличается от того, как я это сделал. Это больше похоже на рельсовый способ ведения дел. Основное отличие в том, что вы не использовали ассоциации. Из определений модели ясно, что вы хотите установить связь «один ко многим» между пользователем и записями, и именно так вы создаете такие ассоциации. С ассоциациями связано много приятностей, например, вы можете делать следующие вещи:
user.entries << entry # add a entry to users, will automatically change entry.creator_id
entry.creator = user # sets creato_id = user_id
entry.creator # returns associated user. no need to do User.find(entry.creator_id)
user.entries # returns all entries for use <=> Entry.where(creator_id: user.id)
для более подробной информации перейдите на http://mongoid.org/docs/relations.html