如何将后代模型与父项相关联

时间:2010-12-16 23:43:11

标签: ruby-on-rails activerecord

我有以下型号:

Account
  has_many :libraries

Library
  has_many :topics
  belongs_to :account

Topic
  has_many :functions
  belongs_to :library

Function
  has_one :example
  belongs_to :topic

Example
  belongs_to :function

我希望能够做到这样的事情:

some_account.libraries
some_account.topics
some_account.functions
some_account.examples

此外,我希望能够为后代分配一个帐户,即

some_example.account = some_account
some_function.account = some_account
some_topic.account = some_account
some_library.account = some_account

提供一些背景信息: 我让用户(帐户)创建每个库,主题,功能,示例。单独记录。然后,用户可以自由更改记录的关联方式:更改函数的主题,将主题移动到其他库,向函数添加示例,等等。

据我所知,无论创建什么记录,我都需要将其分配给用户(帐户),以便我可以列出用户创建的每个模型记录,以及防止其他用户看到不属于他们的东西

虽然我可能过于复杂,但我真的不知道:(

提前致谢。

1 个答案:

答案 0 :(得分:1)

刚刚放

belongs_to :account

用户可以制作的每个实体...并添加外键,

Account
  has_many :libraries
  has_many :topics
  has_many :functions
  has_many :examples

(注意:我使用hobo_fields gem来简化迁移)

那样..如果他们改变哪些功能在哪些主题等等......你不能放松谁创造它。

如果您想确保用户无法将其主题添加到其他人的库中,只需在记录上放置验证以防止它。