我正在将应用程序从定义对象的PHP迁移到ROR,我们将其称为可由用户创建的文档,该用户是应用程序的注册用户,或者是仅提供其电子邮件的匿名用户地址(在这种情况下没有关联的用户帐户)。访问者无需创建用户帐户,但他们仍应能够创建文档。
在我的模型中,我首先创建了Document模型,该模型引用了具有belongs_to关联的用户。但情况并非总是如此。在纯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关系,但我不确定这是否是正确的道路。
任何帮助或建议都将不胜感激,谢谢!
答案 0 :(得分:0)
您可能需要考虑使User类更灵活,因此它支持匿名用户并仅存储电子邮件地址。
它可能会让你的代码更清洁。