我想根据某些搜索字符串从db中获取数据。但我得到了例外
undefined method `find_all_by_client_name' for ...
有人可以告诉代码的问题是什么吗?
@workout_schedules = WorkoutSchedule.find_all_by_client_name(params[:search_string])
以下是工作日程序的架构
ActiveRecord::Schema.define(version: 20140804052924) do
create_table "workout_schedules", force: true do |t|
t.string "client_name"
t.string "trainer"
t.integer "duration_mins"
t.date "date_of_workout"
t.decimal "paid_amount"
t.datetime "created_at"
t.datetime "updated_at"
end
end
答案 0 :(得分:3)
在Rails 4.1中,find_by_<column_name>
和find_all_by_<column_name>
方法已被删除。
在4.1发行说明中:
删除activerecord-deprecated_finders作为依赖项。请参阅 宝石README了解更多信息。
您可以使用where
:
@workout_schedules = WorkoutSchedule.where(:client_name => params[:search_string])
我强烈建议where
超过find_by
。在基于属性的查找程序中,会对查询施加额外的overhead。
如果你想使用这些发现者,仍然如此。您可以使用 activerecord-deprecated_finders gem重新获得搜索功能。
干杯!
修改强>
如果您想按多列搜索,可以使用where
,如下所示:
search_string = params[:search_string]
@workout_schedules = WorkoutSchedule.where(["trainer = ? OR client_name = ?", search_string, search_string])