Rails读取活动记录时没有

时间:2012-06-20 08:25:45

标签: ruby-on-rails ruby activerecord null

我在我的模板中有这个

<% @clients.each do |client| %>
<li><%= link_to client.name, :controller => "client", :action => "show", :id => client.id %></li>
<%=YAML::dump(client.lastfull)%>
<% end %>

客户端看起来像这样:

class Client < ActiveRecord::Base
        set_table_name 'client'
        alias_attribute :id, :clientid
        set_primary_key :clientid


        has_many :jobs, :foreign_key => 'clientid', :order => 'starttime DESC'

        def lastfull
                jobs.first
        end
end

这是有效的,这是输出:

--- !ruby/object:Job attributes: jobid: "81" name: dobrak comment: "" endtime: 2012-06-20 10:15:04

但是当我尝试读取任何属性时,我会收到错误:

undefined method `jobid' for nil:NilClass

工作班:

class Job < ActiveRecord::Base
        attr_accessor :jobid

        set_table_name 'job'
        belongs_to :client

        has_one :status, :primary_key => 'jobstatus', :foreign_key => 'jobstatus'
end

我尝试添加返回属性并添加attr_accessor的方法jobid,但没有任何方法可以帮助我。有什么建议?谢谢。

Rails 2.3.5

2 个答案:

答案 0 :(得分:2)

看起来有客户没有任何工作。如果将行更改为<%= client.lastfull.present? ? YAML::dump(client.lastfull.jobid) : 'client has no jobs' %>,会发生什么?您还可以查看Object#try

答案 1 :(得分:0)

在输出客户端#lastfull的结果之前添加条件,如下所示:

<% if client.lastfull %>
  output job info here like <%= lastfull.jobid %> etc.
<% else %>
  no jobs available
<% end %>