![](/img/trans.png)
[英]Using rails associations for models (undefined method `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.