2011-01-27 5 views
0

Я использую rails3 + mongoid + devize для создания приложения. У меня есть пользователи, и каждый пользователь может иметь приложения, мне интересно, должен ли я явно хранить user_id в документе назначения или как получить mongoid, чтобы обрабатывать это автоматически с определенным отношением.Mongoid Relational Associations

пользователя и назначение моделей следующим образом

class User 
    include Mongoid::Document 
    devise: database_authenticable, :registerable, :recoverable, :rememberable, :trackable, :validatable 

    field :username 
    validates_presence_of :username 
    validates_uniqueness_of :name, :email, :case_sensitive => false 
    attr_accessible :name, :email, :password, :password_confirmation 

    references_many :appointments 
end 

class Appointment 
    include Mongoid::Document 

    field :date, :type => Date, :default => Date.today 
    referenced_in :user 
end 

Мне интересно, как идти о создании назначения и с его связан с текущим вошедшим пользователем (current_user с помощью Завещания).

Любые советы по следующему workout_controller, в частности, строка 2?

def create 
    @appointment = current_user.Appointment.new(params[:appointment]) 
    if @appointment.save 
    redirect_to(:action => 'show', :id => @appointment._id) 
    else 
    render('edit') 
    end 
end 

ответ

1

Во-первых, я считаю, ваша последняя строка Appointment класса должен сказать referenced_in :user вместо :person.

Затем, вы должны быть в состоянии установить линию 2 из контроллера следующим образом:

@appointment = current_user.appointments.new(params[:appointment]) 

После сохранения, current_user.appointments должна включать в себя новое назначение.

+0

Упс, человек вместо: пользователь был опечаткой с моей стороны. Но, да, это работает сейчас, блестяще. Забыл, вам нужно использовать «contactsments.new» вместо «destination.new», – Hutch