Ale*_*lex 4 ruby activerecord ruby-on-rails associations ruby-on-rails-3
我是rails的新手,并在rails3(beta4)上构建一个小型测试应用程序.
我正在使用Authlogic来管理用户会话(根据本教程以标准方式设置)
我有脚手架和设置卡模型(基本上是一个帖子),并为a belongs_to
和has_many
关系设置基本的活动记录关联
user.rb
has_many :cards
Run Code Online (Sandbox Code Playgroud)
card.rb
belongs_to :user
Run Code Online (Sandbox Code Playgroud)
我将我的外键列添加到我的卡表: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
Run Code Online (Sandbox Code Playgroud)
current_user
在应用程序控制器中定义,可在此处查看
user_id
正在传递NULL
,没有任何内容写入数据库user_id
列,使其保持默认值1
而不是实际登录用户的ID.
我尝试过像这样明显的事情 @user = current_user
它可能是非常简单的东西,但今天是我第一次带轨道的真实日子 - 谢谢!
现在,它显示为您在操作上设置用户new
,但不在create
操作上.
我看到2个选项,后者更好:
如果继续留@card.user = current_user
在你的new
行动,你可以设置一个隐藏的输入字段card[user_id]
,可以包含当前用户的ID.这是一个非常糟糕的主意,因为任何人都可以将他们想要的东西扔进那个领域.
尝试在行动中@card.user = current_user
的@card.save
行前移动create
.这样,用户就无法使用它,并且当它实际即将被保存时,它会将其设置为卡对象.
归档时间: |
|
查看次数: |
2784 次 |
最近记录: |