簡體   English   中英

我應該如何從關聯的模型訪問虛擬屬性?

[英]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_namelast_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM