Ruby中可选的belongs_to关系

时间:2011-03-01 02:01:49

标签: ruby ruby-on-rails-3

我正在将应用程序从定义对象的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关系,但我不确定这是否是正确的道路。

任何帮助或建议都将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

您可能需要考虑使User类更灵活,因此它支持匿名用户并仅存储电子邮件地址。

它可能会让你的代码更清洁。