我有一个跟踪社交数据的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?
如果重要的话,我正在使用设计来处理我的用户管理事务
任何帮助将不胜感激
感谢
答案 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是什么意思 - 它没有用户,所以我不知道你将要用这些信息做什么,对不起!