1

(Rails 3) activerecord クエリに奇妙な問題があります。

クエリ #1 (下記) をビュー (下記) に送信すると、すべて正常に動作します...しかし、クエリ #2 (下記) を送信すると、「nil:NilClass の未定義メソッド `strftime'」が返されます。

...ただし、クエリ #2 から strtime 文字列を取り除くと、フォーマットされていない時刻が正常に返されます。

「専門分野」は has_many :through テーブルです。何か関係があると思いますが・・・よくわかりません。

何が起こっているのか分かりますか?すべての提案を歓迎します:

クエリ #1 (正常に動作します)

@professionals = Professional.all(:include => :user, :conditions => ["users.first_name = ? AND users.last_name = ?", params[:name][:first], params[:name][:last]])

クエリ #2 (strtime を中断)

 @professionals = Professional.all(:include => [:user, :professional_specialties], :conditions => ["professional_specialties.profession_type_id = ?", params[:profession_type]] )

意見

<% @professionals.each do |p| %>
  <tr>
    <td><%= link_to("%s %s" % [p.user.first_name, p.user.last_name], p) %></td>
    <td><%= p.business %></td>
    <td><%= p.user.role.name %></td>
    <td><%= p.user.created_at %></td>
    <td><%= p.user.last_sign_in_at.strftime("%Y") %></td>
  </tr>

<% end %>
4

1 に答える 1

6

私の最善の推測は、2 つのクエリが異なる結果セットを返すことです。2 番目の結果セットでは、1 人以上のユーザーが列のNULL値を持っていlast_sign_in_atます。

Professional.all(...).map(&:users)Rails コンソール (rails consoleアプリケーション ディレクトリ内) で実行し、すべてのタイムスタンプが有効であることを再確認します。

于 2010-12-26T00:30:22.640 に答える