2

我在弄清楚如何在 Rails_Admin 界面中的模型列表视图中搜索关联时遇到问题。

背景资料:

  • 模型:帖子、用户、中心和组织。
  • 目标:用户使用通过集线器设备将 http 请求发布到数据库的设备进行发布。该数据库显示用户的帖子。帖子属于用户,用户通过属于集线器的设备发送帖子,集线器属于组织。
  • 我想要完成的事情:在 rails admin 中,我想要一个 Post 模型的自定义字段来显示发布帖子的用户所属的组织。
  • 当前问题:我可以使用 Post 模型的组织方法将 Post 的用户组织显示为字段中的字符串,但我无法在 Rails_admin 中创建可以使其可搜索的过滤器。在 Rails_Admin 中,将行添加searchable :organizationconfig.model Post do...field :organization do{}end...end不起作用。

我真的很感激关于这个问题的任何建议。谢谢!

岗位型号:

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

用户型号:

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

集线器型号:

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

组织模式:

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 初始化器:

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
4

1 回答 1

4

看起来记录在案的答案确实有效 - 你的行

searchable :organization

应该

searchable :name

这将为组织(在“添加过滤器”菜单下)添加一个搜索名称字段的选项,但它不会将该字段的搜索添加到快速“过滤器”输入中。

于 2012-11-19T19:39:57.347 回答