我有一个通过has_and_belongs_to_many
关系相关的两种车型。
我创建了从第一个模型(:full_name
)User
虚拟属性:first_name
和:last_name
属性。
我使用ActiveAdmin,并试图显示用户的:full_name
属性,它的相关模型的ActiveAdmin形式。
我在Rails的控制台检查,发现@user.full_name
是存在的。
在用户模式,我已经full_name
使用,我发现here和here信息定义。
下面是从模型的代码和它相关的模型(Group
)管理/ group.rb页。
# user.rb
def full_name
[first_name, last_name].join(' ')
end
def full_name=(name)
split = name.split(' ', 2)
self.first_name = split.first
self.last_name = split.last
end
# admin/group.rb
form do |f|
f.inputs 'Details' do
f.input :description
f.input :users, as: :check_boxes, collection: User.pluck(:full_name, :id)
f.submit
end
end
我希望从属性first_name
和last_name
查看全名。
我的代码,因为它是出现在表单中每个用户标记为“FULL_NAME”。
pluck
直接从数据库中抓取列。因为你的full_name
方法不是数据库列您收到此错误。
更改User.pluck(:full_name, :id)
到
User.select(:id, :first_name, :last_name).all.map{|u| [u.full_name, u.id] }
你可以通过这样的映射访问你full_name
实例方法
User.all.map { |x| [x.full_name, x.id] }