我对rails很新,在创建带关联的新对象时遇到问题。我有3个对象:用户,工作,出价。出价属于用户并属于作业。作业和用户都有很多出价。我的问题是,当我尝试使用参数中的出价哈希创建新出价时,不会更新任何出价属性。
class Bid < ActiveRecord::Base
belongs_to :job
belongs_to :user
attr_accessor :pay_type, :rate, :comment
attr_protected :user_id, :job_id
end
在出价控制器创建操作中,params [:bid]产生以下结果: {“pay_type”=&gt;“HOURLY”,“rate”=&gt;“88”,“评论”=&gt;“出价测试”}
但如果我尝试
@bid = Bid.new(params[:bid])
@bid =
<Bid id: nil, pay_type: nil, rate: nil, comment: nil, user_id: nil, job_id: nil>
我也试过
@job.bids.build(params[:bid])
但是唯一分配的出价属性是job_id:
<Bid id: nil, pay_type: nil, rate: nil, comment: nil, user_id: nil, job_id: 4>
任何方向都会非常感激。如果我应该提供更多信息,请告诉我。
答案 0 :(得分:0)
在这种情况下,我认为您要使用attr_accessible
而不是attr_accessor
,因为您要尝试的是通过质量分配设置这些参数。
查看attr_accessible文档,详细了解其工作原理。此外,请记住,您需要确保您的应用程序不受大规模分配漏洞的影响 - 只需仔细按照文档进行操作即可。您应该没问题。