gpt4 book ai didi

ruby-on-rails - 外键 (class_id) 未填充在 belongs_to 关联中

转载 作者:数据小太阳 更新时间:2023-10-29 07:25:19 25 4
gpt4 key购买 nike

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

我正在使用 Authlogic 来管理用户 session (以标准方式设置为 per this tutorial)

我搭建并设置了一个卡片模型(基本上是一篇文章),并为 belongs_tohas_many 关系设置了基本的事件记录关联

用户.rb

has_many :cards

card.rb

belongs_to :user

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

一切正常。我完成了我的观点,我可以看到关联,卡片可以属于不同的用户,这一切都很棒。

但是创建新卡的时候好像抓不到当前活跃用户

cards_controller.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 在应用程序 Controller 中定义,available to view here

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

我尝试了一些显而易见的事情,比如 @user = current_user

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

最佳答案

现在,它显示为您将用户设置为 new 操作,而不是 create 操作。

我看到 2 个选项,后者更好:

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

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

关于ruby-on-rails - 外键 (class_id) 未填充在 belongs_to 关联中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3128619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com