Rails 3设置belongs_to关联的参数

时间:2010-12-31 18:19:07

标签: ruby-on-rails ruby ruby-on-rails-3 has-many-through

我有一个跟踪社交数据的rails应用。用户将能够通过页面的社交ID创建组并将页面(即Facebook粉丝页面)添加到他们的组。由于用户可能会将该页面添加为其他人,因此我将其设置为每个社交ID只有一个页面。我还有一个名为Catgorizations的数据透视表,它将页面链接到组和用户。

我的模型关系设置如下:


User  
    has_many :groups

Group  
    belongs_to :user
    has_many :categorizations  
    has_many :pages, :through => :categorizations  

Page  
    has_many :categorizations  
    has_many :groups, :through => :categorizations

Categorization  
    belongs_to :group  
    belongs_to :page

现在,当我创建一个新页面并保存时,它正在创建一个新的分类。我遇到的问题是在分类中我需要手动设置user_id。我试过了:


@page.categorizations.user_id

但是我得到了一个未定义的方法user_id错误。我可能从错误的方向接近这个,但我如何通过页面对象设置分类的user_id? 如果重要的话,我正在使用设计来处理我的用户管理事务 任何帮助将不胜感激 感谢

2 个答案:

答案 0 :(得分:0)

根据您的描述和模型,只有Pages有用户,而不是分类,这就是为什么你会得到它不存在的错误(它不在你的数据库中)。

此外,您在页面上缺少相反的关联:

Page
    belongs_to :user

这允许您从Page:

返回用户
@page.user.id

答案 1 :(得分:0)

你要做的是在“链式”关系中访问几个层次的东西。

为了访问User模型的实例,给定一个页面,您需要获取其分类,选择一个(如何?),获取其组,然后查看该组的user_id。

从概念上讲,页面实际上会有许多用户可能负责对其进行分类。

要让某事发生,您可以随意选择第一个分类,然后对其用户执行某些操作:

cat = @page.categorizations.first
user = cat.group.user

我不知道你为'设置'分类的用户ID是什么意思 - 它没有用户,所以我不知道你将要用这些信息做什么,对不起!