class Task < ActiveRecord::Base
belongs_to :taskable, polymorphic: true
end
class FirstTask < Task
end
class Contact < ActiveRecord::Base
# name
end
FirstTask 的对象是 contact,在用 ransack 时
写法 1:使用 meta_search 的老写法
params = {"taskable_name_cont"=>"22"}
FirstTask.search params
NameError: uninitialized constant Task::Taskable
查了好久 写法 2:网上查的
params = {"taskable_of_Contact_name_cont"=>"22"}
问题一样
写法 3:仔细看作者写的测试,发现 Contact 的首字母不仅要大写,而且后面一定要加一个'_type',有点坑啊。
params = {"taskable_of_Contact_type_name_cont"=>"22"}
和写法 1 比要自己加上'of_ClassName_type'。