Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
RubyonRails 4:用于连接的ActiveRecord方法_Activerecord_Ruby On Rails 4_Dry - Fatal编程技术网

RubyonRails 4:用于连接的ActiveRecord方法

RubyonRails 4:用于连接的ActiveRecord方法,activerecord,ruby-on-rails-4,dry,Activerecord,Ruby On Rails 4,Dry,我有两个相关联的表,用户和列表。此join语句在我的所有控制器操作中都可以正常工作: @users = User.joins(:lists).where(lists: {list_id: 1}) 在我的用户模型中,我将这样做: def list_joined self.joins(:surveys).where(surveys: {survey_id: 1}) end 因此,在控制器操作中,我可以执行以下操作: @users = User.list_joined 但这给了我一个错

我有两个相关联的表,用户和列表。此join语句在我的所有控制器操作中都可以正常工作:

@users = User.joins(:lists).where(lists: {list_id: 1})
在我的用户模型中,我将这样做:

def list_joined
     self.joins(:surveys).where(surveys: {survey_id: 1})
end
因此,在控制器操作中,我可以执行以下操作:

@users = User.list_joined
但这给了我一个错误:

undefined method `list_joined' for #<Class:0x007f93a14138e0>
未定义的方法“list\u joined”#

如何在ActiveRecord模型中编写/使用自定义方法来重用联接?(或者我可以吗?

您尝试编写如下所示的类方法

def self.list_joined
  joins(:surveys).where(surveys: {survey_id: 1})
end

方法定义中的
self
指向类,其中该定义为,
User

Ugh。我不敢相信我不知道如何编写类方法。我想我到目前为止写的都是实例方法。谢谢