我有两个表“ Journeys”和“ stop” 当我创建新旅程时,我需要创建一个站点。 站点也是参考站表。这很好:
@stop = Stop.create(Station.find_by("Station name ").id)
但是当我尝试以下操作时,它给了我
nil:NilClass错误的未定义方法'id'
name = "whatever"
@stop = Stop.create(Station.find_by(name: name).id)
答案 0 :(得分:1)
find
与find_by
不同,Model.find_by(field: "value")
使用哈希参数,因此您应该像这样使用它:
find_by!
出现此错误是因为数据库上没有给定名称的记录。您也可以尝试ActiveRecord::RecordNotFound
,当记录不存在时会引发{{1}}异常。
答案 1 :(得分:0)
我们如何确定find_by
名称返回一个Station
对象?我们不能。
这样会更安全
if station = Stating.find_by(name: name) # returns nil if no record with name
@stop = Stop.create(station.id)
end
答案 2 :(得分:0)
简单,车站表中没有“任何”名称条目。
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:autoMirrored="true"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z" />
</vector>
如果您想忽略该错误并返回nil