sbolel
sbolel

Reputation: 3526

Rails_admin filtering with associations problems

I'm having a problem figuring out how to search across associations in the list views for models in the Rails_Admin interface.

Background information:

I would really appreciate any advice on this matter. Thank you!

Post model:

class Post < ActiveRecord::Base

  belongs_to :user
  belongs_to :hub

  attr_accessible :hub_id, :user_id

  before_validation :set_count

  validates :hub_id, :presence => true
  validates :user_id, :presence => true
  validates :count, :presence => true, :numericality => {:greater_than_or_equal_to => 0}

  before_create :update_redis

  def organization
    self.hub.organization.name
  end

  def user_email
    self.user.email
  end

  private

  def user_email
    self.user.email
  end

end

User model:

class User < ActiveRecord::Base

  belongs_to :organization
  has_many :posts, :extend => User::Posts

  accepts_nested_attributes_for :organization

  attr_accessible :email, :password, :password_confirmation, :remember_me, :as => [:default, :admin]
  attr_accessible :device_id, :organization_id, :role_ids, :as => :admin
  attr_accessible :organization_attributes, :as => [:admin, :manager]

  after_save :update_total

end

Hub model:

class Hub < ActiveRecord::Base

  devise :token_authenticatable, :trackable

  belongs_to :organization, :inverse_of => :hubs
  has_many :posts

  attr_accessible :location, :organization_id, :as => :admin

  validates :organization, :presence => true
  validates :location, :presence => true

  before_save :ensure_authentication_token

end

Organization model:

class Organization < ActiveRecord::Base

  attr_accessible :name, :street_address_1, :street_address_2, :city, :state, :zip_code, :goal_per_hour, :as => [:admin, :manager
  ]
  has_many :hubs
  has_many :posts, :through => :hubs, :extend => Organization::Posts
  has_many :users

  validates :name, :presence => true, :uniqueness => true

end


rails_admin.rb initializer:

config.model Post do
  list do
    filters [:user, :hub]
    items_per_page 200
    field :id do
      column_width 50
    end
    field :count do
      column_width 35
    end
    field :user do
      column_width 50
    end
    field :user_email
    field :hub do
      column_width 50
    end
    field :organization do
      label "Organization"
      # searchable :organization # This line doesn't work!!
    end
    field :created_at do
      strftime_format "%m/%d/%y %H:%M"
      column_width 90
    end
    #field :updated_at do
    #  strftime_format "%m/%d/%y %H:%M"
    #  column_width 90
    #end
  end
  show do
    include_all_fields
    field :user_email
    field :organization_name, :string do
      label "Organization"
    end
  end
end

Upvotes: 2

Views: 6186

Answers (1)

Michael Hellein
Michael Hellein

Reputation: 4568

It looks like the documented answer does work - your line

searchable :organization

should be

searchable :name

and that will add an option for Organization (under the "Add Filter" menu) that searches the name field, but it won't add searching on that field to the quick "Filter" input.

Upvotes: 4

Related Questions