[英]NoMethodError on has_many relationship ruby on rails
我有三個模型,我正在努力讓與產品相關的各個團隊中的人員。
產品
class Product < ActiveRecord::Base
mount_uploader :photo, ImageUploader
has_one :team
end
球隊
class Team < ActiveRecord::Base
has_many :persons
belongs_to :product
end
人
class Person < ActiveRecord::Base
mount_uploader :photo, ImageUploader
belongs_to :team
end
當我嘗試這個電話
@product = Product.find_by(name: params[:name])
if @product.team.count > 0
@team = @product.team.persons
end
我懂了
NoMethodError (undefined method `count' for #<Team:0x90dc098>):
NoMethodError(團隊0x90dc098的未定義方法`count')
count
對ActiveRecord::Relation
數組有效。 在這里, find_by
返回單個記錄,而不是ActiveRecord::Relation
。 更改find_by
到where
應該工作。
@product = Product.where(name: params[:name]).first
if @product.team.count > 0
@team = @product.team.persons
end
您要應用的count函數不是數組,因此您將收到該錯誤。 您可以這樣做:
@product = Product.find_by(name: params[:name])
if @product.team.present?
@team = @product.team.persons
end
或使用Pavan提到的where子句
只是添加一些額外的內容( .try
):
@product = Product.find_by name: params[:name]
@team = @product.try(:team).try(:persons) #-> returns false if team or persons nil
然后,您將在前端使用一些條件邏輯:
<% if @team %>
...基本上與您現在使用的模式相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.