Монгоидные реляционные ассоциации - PullRequest
0 голосов
/ 27 января 2011

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

Модели пользователя и назначения следующие:

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 использует devise).

Какой-нибудь совет по поводу следующего элемента 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 Ответ

1 голос
/ 27 января 2011

Прежде всего, я считаю, что ваша последняя строка класса Appointment должна содержать referenced_in :user вместо :person.

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

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

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

...