在我的用户模型中,我有以下内容:
class User < ActiveRecord::Base
has_many :friendships, dependent: :destroy
has_many :friends, :class_name => "User", :foreign_key => "friend_id"
has_many :pending_friends,
:through => :friendships,
:conditions => "status = 'pending'",
:foreign_key => "user_id",
:source => :friend
has_many :requested_friends,
:through => :friendships,
:source => :friend,
:conditions => "status = 'requested'"
def friends
direct_friends | inverse_friends
end
在我的友谊模型中,我有以下内容:
class Friendship < ActiveRecord::Base
belongs_to :user
belongs_to :friend, :class_name => "User", :foreign_key => "friend_id"
在我看来,我已经创建了每个用户的朋友的数组,如下所示。此代码有效,并使用来自朋友的"User"数据库模型属性的所有数据填充数组。
User.first.friends
但是,我希望能够呼叫用户朋友的名字。那么,例如,我不应该做这样的事情吗?
User.first.friends.map(&:name)
如何获取一个仅包含好友姓名的数组,而不是所有好友的用户属性?如果有人能告诉我为什么使用 .first,我将不胜感激(我从这里得到的:Rails 从朋友模型中调用用户记录),因为它不仅获取用户朋友的第一个实例(它获取所有实例)。为什么只是做:
User.friends
返回一个空数组?
尝试方法采摘:
User.first.friends.pluck(:name)
应使用first
方法从表中检索一个对象。用户是包含大量用户的表。