簡體   English   中英

Ruby on Rails:has_one關聯的未定義方法錯誤

[英]Ruby on Rails: Undefined Method Error with has_one associations

出於某種原因,我得到了針對某些查詢的NoMethodError,該查詢實際上在rails控制台中有效。

index.html.erb中的代碼

@requests.first.acceptance

這是我的錯誤

undefined method `acceptance' for #<ActiveRecord::Relation::ActiveRecord_Relation_Arrangement:0x000000042ceeb8>

這些是我的模塊。

class Arrangement < ActiveRecord::Base
  belongs_to :acceptance
  belongs_to :request
  belongs_to :offer, inverse_of: :arrangements
end

class Acceptance < ActiveRecord::Base
  belongs_to :user, inverse_of: :acceptances
  has_one :arrangement
end

class Request < ActiveRecord::Base
  belongs_to :user, inverse_of: :requests
  has_one :arrangement
end

這是我的控制器

def index 
    @requests = Array.new
    for request in current_user.requests do 
        @requests << Arrangement.where("request_id = ?", request.id)
    end
    @acceptances = Array.new
    for acceptance in current_user.acceptances do 
         @acceptances << Arrangement.where("acceptance_id = ?", acceptance.id)
    end
end

我無法弄清楚我在這里做錯了什么。 一切都可以在控制台中運行,但不能在瀏覽器中運行。

Arrangement.where("request_id = ?", request.id)

返回類似數組的關系對象,該對象可能包含多個記錄,而不僅僅是一個記錄。

但是,在控制器的這一行上

@requests << Arrangement.where("request_id = ?", request.id)

您正在將關系添加到數組中,以便

@requests.first.acceptance

返回關系,而不是第一條記錄。

解決此問題的一種方法是在您的控制器中執行此操作:

@requests = Array.new
for request in current_user.requests do 
    @requests << Arrangement.where("request_id = ?", request.id).first
end

解決了

我在控制器的@requests數組中傳遞了一個數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM