Rails 三个对象互相关联的问题

runup · 2013年08月24日 · 最后由 runup 回复于 2013年08月24日 · 3191 次阅读

如何建立这个 comment 对象呢?

类似的帖子 @hisea

你这个没有错啊

@article.comments.new(:user_id => 1, ...)

LZ 你是想问这个?

#3 楼 @messiahxu

这里得用 build

@article.comments.build(:user_id => 1, ...)

我也认为楼主应该是在问这个。

不知道

@user.comments.build(:article_id => 1, ...)

这样行不行,我觉得应该两种都行...没测试过。

#4 楼 @blacktulip 现在 build 已经和 new 一样了。 两种当然都可以,只是第二种逻辑上不太对

其实这个怎么创建都好,new 创建了怎么都要传到 form 里面,然后再回来 create 的时候,最好用 current_user 赋值给他,还有 strong parameter。避免可以通过 mass assignment 假冒别人回复。

#5 楼 @messiahxu 请问你说的一样是哪个版本啊?老的版本不行的吧

#6 楼 @hisea 恩,我是用 current_user 赋值的,不过不太懂您说的 strong parameter,能否解释下。还有在 console 下面建立 comment 和 user 以及 article 的关联用 rails g model Comment comment:text user:references article:references 这个合适么,还是有其他的方法?

#3 楼 @messiahxu 是否用@user.comments.new(:article_id => 1, ...) 也可以?

#3 楼 @messiahxu 还有建立三张表的关联 rails g model Comment comment:text user:references article:references 是否合适,还是说有其他的方法?

#10 楼 @runup 合适,或者 user_id:integer 也可以。strong parameter 是 rails 4 的一个概念。到时候可以看看。

@messiahxu @hisea 求教两位 def create @user = User.find(current_user) @article= @user.articles.find(params[:id]) @comment = @user.comments.create(params[:comment]) redirect_to root_path end 报错为 could't find Article whihout an ID
之后我把这条语句删除,出现的结果是数据库中不存在 article_id 这个字段,根本没有保存进去。请问如何解决

#7 楼 @runup 大概是从 3.2 开始一样的。

#12 楼 @runup 请把所有代码推上 github,光凭行为描述很难猜到哪里写得不对

http://ruby-china.org/topics/13575 @blacktulip 非常感谢提醒,我的代码已经放在这个问题里面,遇到了新问题,恳请帮我看下,非常感谢。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号