[英]How should I access a virtual attribute from an associated model?
我有兩個通過has_and_belongs_to_many
關系關聯的模型。
我已經從第一個模型的( User
) :first_name
和:last_name
屬性創建了一個虛擬屬性:full_name
。
我正在使用ActiveAdmin,並嘗試在其關聯模型的ActiveAdmin表單中顯示User的:full_name
屬性。
我已經在Rails控制台中簽入,發現@user.full_name
存在。
在用戶模型中,我已使用在此處和此處找到的信息定義了full_name
。
下面是該模型及其相關模型的( Group
)admin / 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] }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.