【问题标题】:has_many through buildhas_many 通过构建
【发布时间】:2011-10-25 14:20:45
【问题描述】:

我有两个模型。用户和账号如下

class Account < ActiveRecord::Base
  has_many :manages
  has_many :users, :through => :manages
end

class User < ActiveRecord::Base
  has_many :manages
  has_many :accounts, :through => :manages
end

如果我要使用 rails 控制台并通过以下方式创建帐户实例

acc = usr.accounts.build
acc.save

以下命令将返回创建的帐户实例

usr.accounts

但是下面的命令不会返回用户实例

acc.users

当我查看 Join 表时,也没有创建任何条目。这里缺少什么?我认为通过使用 build 方法,它会自动创建连接模型条目。

【问题讨论】:

  • 账户对象是否有任何验证错误?
  • @Stephen nop。当我执行acc.save 时,控制台上没有出现错误

标签: ruby-on-rails-3 many-to-many associations has-many-through


【解决方案1】:

如果您使用 .save! 而不是 .save

,您将获得完整的错误报告

使用 has_many :through 请尝试添加模型

class Manage < ActiveRecord::Base
  belongs_to :user
  belongs_to :account
end

【讨论】:

    【解决方案2】:

    尝试保存用户对象。

    acc = usr.accounts.build
    usr.save
    

    【讨论】:

    • 不,这个想法是保存父级保存未持久的关联子级。请参阅evernote.com/l/AAL0VZ4pfXFJtJEnMeSo2vL4XWn-tLDD7E0,其中我在 Rails 控制台中展示了父(用户)子(反馈)关系。
    • 糟糕,抱歉,在重新阅读了您指向特定 rails 问题的链接后,我可能误解了这个问题,因为我的示例不是针对 has_many :through 关系。我没有检查那个案子。而且我很快就没有时间进一步研究这个问题了。好问题,@neanderslob!
    猜你喜欢
    • 2012-08-22
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多