【发布时间】:2014-06-27 19:30:58
【问题描述】:
我正在尝试在我的项目中实现搜索功能, 所以我添加了类方法:
class Donation < ActiveRecord::Base
belongs_to :member
def self.search_by_name name
includes(:member).where(member: { name: name } )
end
end
我在 donatinos#index 中调用它
class DonationsController < ApplicationController
def index
search_donations
end
private
def search_donations
if !params[:name].blank?
@donations = Donation.search_by_name params[:name]
else
@donations = Donation.all
end
end
end
最后,我实现了索引模板:
<%= form_tag donations_path,:method => 'get' do %>
<%= text_field_tag :name %>
<%= submit_tag "search", name: nil %>
<% end %>
<table>
<% @donations.each do |donation| %>
<tr>
<td><%= donation.total %></td>
</tr>
<% end %>
</tbody>
</table>
我在表格中输入“Ted Wang”后收到错误消息
SQLite3::SQLException: no such column: member.name: SELECT "donations"."id" AS t0_r0, "donations"."organization_id" AS t0_r1, "donations"."category" AS t0_r2, "donations"."borrow_id" AS t0_r3, "donations"."member_id" AS t0_r4, "donations"."total" AS t0_r5, "donations"."note" AS t0_r6, "donations"."created_at" AS t0_r7, "donations"."updated_at" AS t0_r8, "donations"."time" AS t0_r9, "members"."id" AS t1_r0, "members"."no" AS t1_r1, "members"."name" AS t1_r2, "members"."nick_name" AS t1_r3, "members"."introducer" AS t1_r4, "members"."role" AS t1_r5, "members"."gender" AS t1_r6, "members"."birthday" AS t1_r7, "members"."lunar_birthday" AS t1_r8, "members"."lunar_deathday" AS t1_r9, "members"."identified_number" AS t1_r10, "members"."home_phone" AS t1_r11, "members"."company_phone" AS t1_r12, "members"."bbcall" AS t1_r13, "members"."mobile" AS t1_r14, "members"."address" AS t1_r15, "members"."permanent_address" AS t1_r16, "members"."education" AS t1_r17, "members"."job" AS t1_r18, "members"."created_at" AS t1_r19, "members"."updated_at" AS t1_r20, "members"."organization_type" AS t1_r21, "members"."organization_id" AS t1_r22, "members"."involved" AS t1_r23 FROM "donations" LEFT OUTER JOIN "members" ON "members"."id" = "donations"."member_id" WHERE "member"."name" = 'Ted Wang'
我用错了includes吗?
并且成员具有属性名称,我也运行了 db:migrate。
【问题讨论】:
-
免去重新发明轮子的痛苦,然后看到有更好的预制件,比如 Ransack => ruby-toolbox.com/categories/Active_Record_Named_Scopes
标签: sql ruby-on-rails ruby rails-activerecord