我有两个通过has_and_belongs_to_many
关系关联的模型。
我已经从第一个模型的:full_name
和User
属性创建了虚拟属性:first_name
。
我正在使用ActiveAdmin,并尝试在其关联模型的ActiveAdmin表单中显示用户的:last_name
属性。
我已经在Rails控制台中签入,发现:full_name
存在。
在用户模型中,我使用发现的here和here信息定义了@user.full_name
。
下面是该模型及其相关模型的(full_name
)admin / group.rb页面中的代码。
Group
我希望从属性# 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
中查看全名。
照我的原样,出现在表单中的每个用户都被标记为“全名”。
答案 0 :(得分:2)
pluck
直接从数据库中获取列。由于您的full_name
方法不是数据库列,因此出现此错误。
将User.pluck(:full_name, :id)
更改为
User.select(:id, :first_name, :last_name).all.map{|u| [u.full_name, u.id] }
答案 1 :(得分:0)
您可以通过这样的映射来访问自己的full_name
实例方法
User.all.map { |x| [x.full_name, x.id] }