Skip to content

Associations basics

bbenezech edited this page Feb 21, 2012 · 15 revisions

Select/Multiselect widget

Ordered associations

For has_many/has_and_belongs_to_many/has_many :through

Orderable can be enabled on filtering multiselect fields, allowing selected options to be moved up/down.

RailsAdmin will handle ordering in and out of the form.

RailsAdmin.config do |config|
  config.model Player do
    edit do
      field :fans do
        orderable true
      end
    end
  end
end

You'll need to handle ordering in your model with a position column for example. See here for a comprehensive ActiveRecord example with a has_many :through association.

Editing records

You can edit related objects by double-clicking on any visible item in the widget.

Limit/filter associated records

See associations scoping for more informations on how to limit and filter proposed associated records.

Inverse_of: Avoiding edit association spaghetti issues

If you set the :inverse_of option on your relations, RailsAdmin will automatically populate the inverse relationship in the modal creation window. (link next to :belongs_to and :has_many multiselect widgets)

It will also hide the inverse relation on nested forms. As a good practice, you should always set :inverse_of options to all your associations, even if these are useless to ActiveRecord (in combination with :through and :as). RailsAdmin will take advantage of them. But it will bomb 'Unknown key: inverse_of' on HABTMs, you'll need to set them manually:

Simply set it directly into your configuration:

config.model Team do
  field :categories do
    inverse_of :teams
  end
end

Readonly

:readonly options are automatically inferred from associations and won't be editable in forms.

Nested form

If you have accepts_nested_attributes set up in your model but don't want the association to be a nested form in your model:

config.model Team do
  field :players do
    nested_form false
  end
end

More here

Clone this wiki locally