-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PostgreSQL column type 'citext' not yet supported #2177
Comments
I worked around this by adding a file called require 'rails_admin/config/fields/base'
module RailsAdmin::Config::Fields::Types
class Citext < RailsAdmin::Config::Fields::Types::String
RailsAdmin::Config::Fields::Types::register(:citext, self)
end
end and then requiring that file at the top of |
Thanks! Will try that soon. |
@soupmatt That config works pretty well, but the columns aren't searchable because the statement builder doesn't know about :citext. Any way to fix that? |
@wlipa I was able to work around this like so: # lib/rails_admin/config/fields/types/citext.rb
require 'rails_admin/config/fields/base'
module RailsAdmin
module Config
module Fields
module Types
class Citext < RailsAdmin::Config::Fields::Types::String
RailsAdmin::Config::Fields::Types::register(:citext, self)
end
end
end
end
# Allow for searching/filtering of `citext` fields.
module Adapters
module ActiveRecord
module CitextStatement
private
def build_statement_for_type
if @type == :citext
return build_statement_for_string_or_text
else
super
end
end
end
class StatementBuilder < RailsAdmin::AbstractModel::StatementBuilder
prepend CitextStatement
end
end
end
end And then in your require Rails.root.join('lib/rails_admin/config/fields/types/citext') I'd be happy to submit a PR with a proper fix, but I'm not sure how to handle Postgres-specific data types. Any guidance on that? |
I just ran into this too, citext is pretty useful for saving usernames with desired capitalisation but allowing to login with any capitalisation. @stevenharman's fix worked perfectly for me, both to edit and search. It's fairly easy to stick in a lib monkeypatch, but it could easily be gemified too if it doesn't belong in core. |
An additional monkeypatch is needed to make the Filters work (without it you get no operator options). // app/assets/javascripts/rails_admin/custom/ui.js
$(document).on("rails_admin.dom_ready", function() {
if (!$.filters.old_append) {
$.filters.old_append = $.filters.append;
$.filters.append = function(options) {
options = options || {};
options.type = options.type == "citext" ? "string" : options.type;
return $.filters.old_append(options);
};
}
}); |
Would there be anything philosophical stopping the above fixes making their way into core? Happy to attempt a PR for this (just ran into this issue). I feel like Rails Admin wouldn't have an issue supporting what Rails supports out of the box. |
There's no specific reason, a PR with corresponding tests will be happily accepted. |
Rails 4.2 adding support for the PostreSQL column type 'citext':
http://www.raysrashmi.com/2014/09/02/new-features-in-rails-4-2
I just started using it, but as a consequence, my rails_admin views no longer work for models that have a citext column:
The text was updated successfully, but these errors were encountered: