1

我有 3 个模型:

class Post
  has_many :comments
end

class Comment
  belongs_to :user
  belongs_to :post
end

class User
  has_many :comments
end

现在在控制器中,我想调用@post.comments 并按 user.postcode 对这些评论进行排序。我尝试了以下但没有奏效:

class Post
  has_many :comments, :order => "user.postcode"
end

我也试过:

class Comment
  def order_by_user_postcode
    includes(:user).order("user.postcode ASC")
  end
end

class PostsController
  @post.comments.order_by_user_postcode
end

这导致

undefined method for ActiveRecord::Relation

如何编写一个链接到@post.comments 以按user.postcode 排序的方法?

4

1 回答 1

0

您必须订购:

has_many :comments, :order => "users.postcode"

表名是用户而不是用户。

第二个选项:

您必须实现类方法(或范围)之类的方法,而不是实例方法

 def self.order_by_user_postcode
   joins(:user).order("users.postcode ASC")
 end

或范围:

scope :order_by_user_postcode, joins(:user).order("users.postcode ASC")
于 2013-04-20T13:02:20.727 回答