Необязательные отношения принадлежат к Ruby - PullRequest
2 голосов
/ 01 марта 2011

Я перевожу приложение в ROR из PHP, который определяет объект, давайте назовем его «Документ», который может быть создан пользователем, который является зарегистрированным пользователем приложения, или анонимным пользователем, который дает только свою электронную почтуадрес (в этом случае без связанной учетной записи пользователя).Не требуется, чтобы посетитель создавал учетную запись пользователя, но он по-прежнему должен иметь возможность создавать документ.

В моей модели меня сначала приводят к созданию модели документа, которая ссылается на пользователя спринадлежит к ассоциации.Это, однако, не всегда так.В чистом SQL и PHP это не сложно, хотя оно сопряжено со своими проблемами, но я бы хотел смоделировать это «самым чистым» способом Ruby / Rails.

Если у посетителя нет ассоциированного пользователя, его адрес электронной почты будет сохранен непосредственно в объекте Document.

Чтобы начать обсуждение, здесь приведены фрагменты для каждой модели.

# user.rb
class User < ActiveRecord::Base
  has_many :documents
end

# document.rb
class Document < ActiveRecord::Base
  attr_accessible :title, :description, :email_address

  belongs_to :user
end

Моя цель - получить все пользовательские документы, используя стандартную точечную запись:

user.documents

, а также проверить обратную связь, чтобы определить, принадлежит ли документ пользователю илиесли он содержит адрес электронной почты.

if document.user.nil? ...

if document.email_address.nil? ...

Я прочитал об отношении has_one, но не уверен, что это правильный путь для перехода.

Любая помощь или предложения будутоценил, спасибо!

1 Ответ

0 голосов
/ 01 марта 2011

Возможно, вы захотите сделать класс User более гибким, чтобы он поддерживал анонимных пользователей и сохранял только адрес электронной почты.

Это может сделать ваш код немного чище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...