简体   繁体   中英

Rails :has_many of a :has_one through

I am having issues setting up model relations in Rails.

I have a User. A user can have many requests. A request can have one response. I set up my models like this:

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

Whenever I try to do something like:

UserRequest.request_response.id

I get errors that say either the relationship doesn't exist or the column does not exist in the table. Have I set up my relationships incorrectly?

You will get error:

UserRequest.request_response.id

Because:

  1. request_response is expected to be a class method of UserRequest .
  2. Association is defined as request_responses , not request_response , so calling user. request_response user. request_response won't work either.

What to do?

call user.request_response_ids where user = User.first .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM