使用rails 3.2&红宝石2.1
这是我的模特
class CheckoutRent < ActiveRecord::Base
attr_accessible :comment, :rent_id, :user_id
belongs_to :user
belongs_to :rent
end
class User < ActiveRecord::Base
has_many :checkout_rent
...
end
我的控制器
class CheckoutRentsController < InheritedResources::Base
def new
if user_signed_in?
@checkout_rent = current_user.checkout_rent.new
@checkout_rent.save
else
redirect_to new_user_session_path, notice: 'Veuillez vous connecter.'
end
end
end
我的观点
= form_for(@checkout_rent) do |f|
.field
= f.select :rent_id, Rent.all.collect{|c| [c.user.name, c.id]}
.field
= f.label :comment
%br/
= f.text_field :comment
.actions
= f.submit
除了在创建新的checkout_rent时未设置user_id时,一切正常。
在控制台中:CheckoutRent.last.user_id返回nil
答案 0 :(得分:2)
您的用户模型has_many checkout_rent,因此在您的控制器中您应该:
@checkout_rent = current_user.checkout_rents.create
注意复数checkout_rents(因为你现在它应该失败),还要注意create替换new + save,所以你可以删除这一行:
@checkout_rent.save
编辑:
我还建议您修改以下行以遵循约定:
has_many :checkout_rents