【问题标题】:How do you set up this association?你如何建立这个协会?
【发布时间】:2011-05-28 04:13:15
【问题描述】:

我想要一个有很多成员的“组”。我已经有一个用户和一个配置文件模型,如果用户将自己标识为“组”,我希望它能够列出其成员。因此,我正在考虑让个人资料has_many :members, :class_name => 'User' 以便“组”可以选择现有用户。但是,我还想让一个组列出不是现有用户的成员。我将如何建立这个协会?我这样做对吗?

【问题讨论】:

  • 所以个人资料有_许多成员(用户)?和用户 belongs_to 个人资料?
  • 是的,除了个人资料belongs_to user
  • 看看你的模型会很有帮助。想向我们展示您在每个模型中的现有关联吗?

标签: ruby-on-rails ruby ruby-on-rails-3 associations


【解决方案1】:

“让群组列出非现有用户的成员”——您的意思是“让群组列出不存在的成员用户”吗?

如果是这样,那么我不久前给出的这个答案可能会有所帮助:How to find all items not related to another model - Rails 3

【讨论】:

  • 不是真的,我的意思是我想让一个组(a.k.a profile)有很多用户,但我希望他们要么是数据库中的现有用户,要么让他们选择新用户通过指定一个字符串的名称不在数据库中。
【解决方案2】:

在您的用户模型中尝试使用此 lambda:

named_scope :not_members, lambda { |profile_id| where("id NOT IN (?)", 
                                   User.where( :profile_id => profile_id ).map(&:id) ) }

稍后在您的代码中:

@not_members = User.not_members(some_profile_id)

PS:这个没测试过

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多