我在has_many association
和user
之间有contact_information
。我向contact_information
添加了两列,分别为address_one
和address_two
。然后将用户和contact_information之间的关联更改为has_one
关联。但是我得到的错误是:
undefined method
是空的吗?”为#`
在app / models / concerns / user_associations.rb中:
has_many :contact_informations, -> { where(address_one: nil, address_two: nil) }, as: :user
已更改为
has_one :contact_information, -> { where(address_one: nil, address_two: nil) }, as: :user
然后在ContactInformationsController
中,将contact_informations
更改为contact_information
。我在ContactInformationsController#show
中遇到以下错误:
def show if @user.contact_information.empty? redirect_to new_contact_information_path else redirect_to edit_contact_information_path end end
@user.contact_informations.empty?
已更改为@user.contact_information.empty?
。但是当我尝试访问该页面时,
NoMethodError - undefined method
是空的吗?”为#`
我在INTERNET上查找了类似的问题,其中大多数人说将其转换为.to_s
。但这并不能解决我的问题
存在contact_information
的对象。那么,为什么在.empty?
上却出错?可以请任何人解释一下吗?
谢谢
答案 0 :(得分:0)
empty?
方法是在可枚举对象(包括活动记录关系)上定义的,但未在单个ActiveRecord
对象(如ContactInformation
实例)上定义。如果要检查关联的存在,只需执行以下操作:
if @user.contact_information
redirect_to edit_contact_information_path
else
redirect_to new_contact_information_path
end