【问题标题】:Rails: Referring back to model the object belongs toRails:回溯对象所属的模型
【发布时间】:2011-01-02 03:00:05
【问题描述】:

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

例如:

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 模型中的“用户”方法,它也不起作用。

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

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

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

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

非常感谢。

【问题讨论】:

    标签: ruby-on-rails model include relationship


    【解决方案1】:

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

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

    即:

    class Post < ActiveRecord::Base
      belongs_to :user
    end
    

    应该做的工作。

    【讨论】:

    • 谢谢。这是我问过的最愚蠢的问题。不敢相信我没有看到。我想知道如果你把它设为复数,它为什么还能工作......
    【解决方案2】:

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

    belongs_to :user
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多