簡體   English   中英

has_many關系上的NoMethodError關系在Rails上的Ruby

[英]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')

countActiveRecord::Relation數組有效。 在這里, find_by返回單個記錄,而不是ActiveRecord::Relation 更改find_bywhere應該工作。

@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.

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