【问题标题】:Rails :has_many of a :has_one throughRails :has_many 中的一个 :has_one 通过
【发布时间】:2014-11-07 19:10:47
【问题描述】:

我在 Rails 中设置模型关系时遇到问题。

我有一个用户。一个用户可以有很多请求。一个请求可以有一个响应。我这样设置我的模型:

Class User < ActiveRecord::Base
    has_many :user_requests
    has_many :request_responses, through: :user_requests
end

Class UserRequest < ActiveRecord::Base
    belongs_to :user
    has_one :request_response
end

Class RequestResponse < ActiveRecord::Base
    belongs_to :user_request
end

每当我尝试做类似的事情时:

UserRequest.request_response.id

我收到错误消息说关系不存在或表中不存在列。我是否错误地建立了我的关系?

【问题讨论】:

  • 你能同时显示所有三个表的数据库模式吗?只有关系 id 可以工作。
  • 架构或迁移?
  • 您在迁移文件中定义了您的数据库架构,请显示这些文件 :)
  • 你是在调用一个类的实例方法吗?
  • @RubyRacer 我想我可能是...

标签: ruby-on-rails ruby activerecord relationship


【解决方案1】:

你会得到错误:

UserRequest.request_response.id

因为:

  1. request_response 应该是UserRequest 的类方法。
  2. 关联定义为request_responses,而不是request_response,因此调用user. request_response 也不起作用。

怎么办?

致电user.request_response_idsuser = User.first

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    相关资源
    最近更新 更多