Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何根据来自另一个数组的值向数组中的每个ActiveRecord添加新属性?_Ruby On Rails_Arrays_Join_Activerecord - Fatal编程技术网

Ruby on rails 如何根据来自另一个数组的值向数组中的每个ActiveRecord添加新属性?

Ruby on rails 如何根据来自另一个数组的值向数组中的每个ActiveRecord添加新属性?,ruby-on-rails,arrays,join,activerecord,Ruby On Rails,Arrays,Join,Activerecord,和往常一样,在帮助别人时,你是不可替代的。我遇到了一个新问题 我有两个模型 User(id: integer) Follower(id: integer, source_user_id: integer, target_user_id: integer) 我有参数[:user\u id]通过get输入 我需要创建一个包含is\u following=>true/false的记录数组 当源用户id=params[:用户id] 当此参数不存在跟随者记录时,is_following应为false 最

和往常一样,在帮助别人时,你是不可替代的。我遇到了一个新问题

我有两个模型

User(id: integer)
Follower(id: integer, source_user_id: integer, target_user_id: integer)
我有
参数[:user\u id]
通过get输入

我需要创建一个包含
is\u following=>true/false
的记录数组

当源用户id=params[:用户id]

当此参数不存在跟随者记录时,
is_following
应为false

最有效的方法是什么


谢谢大家!

编辑以反映您想要的澄清

用户
模型中定义一个助手函数,称为:

def is_following?
  !Follower.where(source_user_id: self.id).empty?
end
现在,您可以使用map方法创建一个数组。您必须有一个哈希数组,因为用户没有任何类型的属性来存储布尔值:

User.all.map { |user| {user: user, is_following: user.is_following? } }

编辑以反映对所需内容的澄清

用户
模型中定义一个助手函数,称为:

def is_following?
  !Follower.where(source_user_id: self.id).empty?
end
现在,您可以使用map方法创建一个数组。您必须有一个哈希数组,因为用户没有任何类型的属性来存储布尔值:

User.all.map { |user| {user: user, is_following: user.is_following? } }

在用户模型中添加方法的快速答案:

基于您的问题,假设存在关联。
请注意,这是对您问题的简短回答。您可能希望重新设计关联,将方法移动到一个新的应用程序中(取决于您的用例),并可能优化查询。

在用户模型中添加方法的快速答案:

基于您的问题,假设存在关联。
请注意,这是对您问题的简短回答。您可能希望重新设计关联,将方法移动到一个新的应用程序中(取决于您的用例),并可能优化查询。

用户模型修改

has_many :followers, class_name: 'Follower', foreign_key: :target_user_id

def is_followed? follower_id
    followers.where(:source_user_id => follower_id).exists?
end
及空气污染指数

users = users.map {|user| { user: user, is_following: user.is_followed?(params[:user_id]) } }

用户模型修改

has_many :followers, class_name: 'Follower', foreign_key: :target_user_id

def is_followed? follower_id
    followers.where(:source_user_id => follower_id).exists?
end
及空气污染指数

users = users.map {|user| { user: user, is_following: user.is_followed?(params[:user_id]) } }


你能展示一些示例数据吗?问题不在于Clear我在寻找一个用户列表,该列表指定一个具有参数[:user_id]的特定用户是否在每个用户后面。你能展示一些示例数据吗?问题不在于Clear我在寻找一个用户列表,该列表指定一个具有参数[:user_id]的特定用户是否在后面是否跟踪每个。我不是在寻找追随者列表。我正在寻找一个用户列表,其中指定某个特定用户是否跟随每个用户。因此,使用第二个解决方案我不明白它的作用。我需要一个用户对象列表,第二个是跟随者对象列表。对不起,我不认为你想要什么很清楚。您是否需要一组用户,并使用一个属性来说明是否正在跟踪他们?是的,后跟在params[:user_id]中给定的用户。我不寻找关注者列表。我正在寻找一个用户列表,其中指定某个特定用户是否跟随每个用户。因此,使用第二个解决方案我不明白它的作用。我需要一个用户对象列表,第二个是跟随者对象列表。对不起,我不认为你想要什么很清楚。您是否需要一组用户,并使用一个属性来说明是否正在跟踪他们?是的,后面跟着在params[:user_id]中给定的用户。谢谢,但是只有部分代码是正确的。首先,答案更旨在给您一个想法,因为您的问题没有包含真正的代码段作为基础。请用有效的代码片段重新表述您的问题,以供参考。感谢您的帮助!然而,这是不公平的其他用户给你的信用。他也给出了一点。谢谢,但是只有一些代码是正确的。首先,答案更倾向于给你一个想法,因为你的问题没有包含真正的代码片段作为基础。请用有效的代码片段重新表述您的问题,以供参考。感谢您的帮助!然而,这是不公平的其他用户给你的信用。他也给了一点。