0

目前,我有一个 6 模型的 ruby​​ on rails 应用程序,我添加了 authlogic。整体设置是

User :has_many categories, topics,messages
Categories has_many topics,
Topics has_many messages 

(有和对应的对立的belongs_to 链接)。

当我尝试访问 current_user.categories.find(2) 时,控制器中没有返回任何结果。

此外,当我尝试运行它时

current_user.topics.find(params[:topic_id]).messages.build

然后,

@msg = current_user.messages.build(params[:message])
@msg.save

它不会从 has_many 中保存 user_id。

在添加 current_user 指令之前,该程序的所有功能都可以正常工作。

我在设置上犯了错误吗?还是执行?

因为在构建后关联没有保存,我以后可以在模型中添加 user_id 字段吗?

抱歉所有问题,并在此先感谢。

4

2 回答 2

1

我认为你最好的选择是一步一步来。current_user 返回什么?该用户的 id 是否与您的数据库中的一个匹配?该用户有任何类别吗?他们中的任何一个的 id 为 2 吗?

如果您可以将问题隔离到链式调用中的单个层,那么调试起来会容易得多。

于 2009-10-07T22:05:35.693 回答
0

谢谢凯尔。我已经使用模型中的过滤器解决了这个问题,而不是使用控制器通过关联在创建时分配它。Current_user 只是使用 authlogic 返回当前用户的记录。我喜欢项目所在的位置,并且可能会在一些视觉调整、安全性和更多 css 之后部署它:)。无论您正在开发什么,回调和过滤器都很棒。此外,如果您需要从 application_controller 获取变量到模型,请使用美元符号 ruby​​ 变量,而不是类实例变量(at-sign)。与自己动手制作的 PHP 或 sintra 应用程序相比,Rails 非常简单。另外,rails 应用程序使用了多少模型?

于 2009-10-08T04:25:32.383 回答