6

这可能是一个愚蠢的问题,但我似乎找不到一个好的答案。我想知道引用对象所属模型的最佳方法。

例如:

class User < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :users
end

所以,要获取用户的帖子,我可以使用 user.posts,但要获取帖子的用户,我不能反过来:post.user

如果我向 Post 模型添加一个“用户”方法,它可以工作,但它似乎不是最好的方法。

class Post < ActiveRecord::Base
  belongs_to :users

  def user
    User.find(self.user_id)
  end
end

如果你看这篇博文http://www.fortytwo.gr/blog/18/9-Essential-Rails-Tips为例,可以看到作者使用了post.user.username,这个是行不通的开箱即用以及 :include => [:user],即使使用 Post 模型中的“user”方法,它也不起作用。

我知道这是初步的,所以感谢您的耐心等待。我只想知道完成这种关系的最佳方式。

我的主要目标是使用嵌套包含编写“发现”,它像这样引用用户:

post = Post.find(:all, :include => [:user])

当我尝试这个时,我得到“ActiveRecord::ConfigurationError: Association named 'user' is not found;也许你拼错了?”

非常感谢。

4

2 回答 2

8

我对 Rails 有点陌生,但这应该会自动工作......

啊 - 您已将 Post 中的父类命名为belongs_to :users; 但是因为它只属于一个用户,Rails 是期待belongs_to :user的(或者,当然,belongs_to :users, :class_name => "User")。

那是:

class Post < ActiveRecord::Base
  belongs_to :user
end

应该做的工作。

于 2010-01-06T16:19:34.543 回答
0

属于一个模型应该是单数。像

belongs_to :user
于 2012-11-30T11:06:46.670 回答