外键(class_id)未填充在belongs_to关联中

2023-12-27

我是 Rails 新手,正在 Rails3(beta4)上构建一个小型测试应用程序。

我在用真实逻辑管理用户会话(以标准方式设置为根据本教程 http://github.com/binarylogic/authlogic_example)

我已经搭建并设置了一个卡片模型(基本上是一个帖子),并为一个设置了基本的活动记录关联belongs_to and has_many关系

user.rb

has_many :cards

card.rb

belongs_to :user

我将外键列添加到我的卡片表中:user_id默认为1

一切都运转得非常好。我已经完成了我的视图,我可以看到关联,卡可以属于不同的用户,这一切都很棒。

But创建新卡时我似乎无法获取当前的活跃用户

卡控制器.rb

def new
  @card = Card.new
  @card.user = current_user

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @card }
  end
end

current_user在应用程序控制器中定义,可以在这里查看 http://github.com/binarylogic/authlogic_example/blob/5819a13477797d758cb6871f475ed1c54bf8a3a7/app/controllers/application_controller.rb

user_id正在经过NULL并且没有任何内容写入数据库user_id列,将其保留为默认值1而不是实际登录用户的 ID。

我尝试了明显的事情,比如@user = current_user

这可能是非常简单的事情,但今天是我真正使用 Rails 的第一天 - 谢谢!


现在,它显示为您正在设置用户new行动,但不是在create行动。

我看到两个选择,后者更好:

  1. 如果你继续离开@card.user = current_user在你的new您可以设置隐藏输入字段的操作card[user_id]其中可以包含当前用户的 id。这是一个完全糟糕的主意,因为任何人都可以将他们想要的任何东西扔进那个领域。

  2. 尝试移动@card.user = current_user就在你之前@card.save线在create行动。这样用户就不能乱搞它,并且在实际要保存时它会将其设置为您的卡片对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

外键(class_id)未填充在belongs_to关联中 的相关文章

随机推荐