我正在rails_admin 0.6.5
使用Rails 4.1.6
并且分别在Volume和Issue模型之间设置了has_many
/ belongs_to
关联:
class Volume < ActiveRecord::Base
has_many :issues, :inverse_of => :volume
validates :number, presence: true, numericality: {greater_than_or_equal_to: 1}
end
和问题模型:
class Issue < ActiveRecord::Base
belongs_to :volume, :inverse_of => :issues
validates :number, presence: true, numericality: {greater_than_or_equal_to: 1}
validates :date, presence: true
end
在rails_admin
界面中,它可以正常运行,但在创建或修改问题时,“音量”下拉菜单中会填充文字Volume #1
,Volume #2
,Volume #3
(每个作为单独的选项)。那些&#34;卷号&#34;对应于:volume_id
,而不是卷的:number
字段,该字段与ID不同,因此会对用户造成混淆。
创建或编辑问题时,如何控制belongs_to
关联下拉菜单中显示的哪个音量列?提前感谢您提供的任何帮助。
答案 0 :(得分:4)
Rails Admin会在您的模型上查找某些属性以供显示。有一个数组RailsAdmin.config.label_methods,它按优先顺序包含这些属性。
默认情况下,它们是[:name,:title]
我想将display_name添加到列表的前面,以便我可以轻松覆盖db上具有name列的任何模型。
要执行此操作,请将以下行添加到config/initializers/rails_admin.rb
config.label_methods.unshift(:display_name)
然后,在你的模型中:
class Volume < ActiveRecord::Base
has_many :issues, :inverse_of => :volume
validates :number, presence: true, numericality: {greater_than_or_equal_to: 1}
def display_name
"Volume #{self.number}"
end
end